【问题标题】:How to create Android ActionBar with custom view and tabs如何使用自定义视图和选项卡创建 Android ActionBar
【发布时间】:2011-11-18 22:43:14
【问题描述】:

我想创建带有自定义视图 (DISPLAY_SHOW_CUSTOM) 的选项卡式操作栏 (NAVIGATION_MODE_TABS)。它应该是这样的:

我只需要能够通过顶行中的按钮浏览活动 - 就像我在正常情况下使用 ActionBar 所做的那样 - 非选项卡模式,并且还能够切换第二行中的选项卡。如果我将ActionBar设置为选项卡模式,自定义视图消失,似乎选项卡模式和自定义视图互斥......甚至可能吗?

在没有 ActionBar 的情况下,还有更多可能的方法来做到这一点。通常我会创建一个带有按钮的布局,将其包含在 TabActivity(现在已弃用)中,仅此而已。但我认为这不是最好的解决方案,因此我们非常感谢您提供任何帮助或建议。

提前致谢。

编辑:经过一番研究,我发现它有效,只是没有显示在我的 4 英寸屏幕上。但是它仍然无法按我的预期工作。在更宽的屏幕上,选项卡右侧会显示自定义视图 - 可以,但在 4 英寸手机屏幕上则根本不显示。

我认为最好的解决方案是使用 ActionBarSherlock 库(我不喜欢使用已弃用的功能,而且我的应用程序还必须在 sdk11 之前的版本设备上运行)和片段 - 一个用于顶部 ActionBar,第二个用于选项卡式视图。

【问题讨论】:

  • 您可能会重新考虑使用操作栏和标签。您可以使用的屏幕有限,太多的导航控件只会使您的应用程序混乱。据我所知,在 3.5 甚至 4 英寸的手机上,这将占据几乎 1/3 的屏幕,如果不是更多的话。只是一个想法:),而且研究工作做得很好,这是最好的学习方式。
  • 不幸的是,没有什么可重新考虑的,这是我的客户的要求......但是,最后,我找到了一个优雅而简单的解决方案,但我之前忽略了。可以将顶行的按钮添加为 optionMenu 项 - 几行并完成布局。问题可以结束了...

标签: android android-layout


【解决方案1】:

顶行的按钮必须作为选项菜单项添加:

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    for (int i = 0; i < menuItems; i++)
    {
        if (i == 0)
        {
            menu.add(R.string.home).setIcon(R.drawable.button_home).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
            menu.getItem(0).setOnMenuItemClickListener(this);

        }
    }

    return super.onCreateOptionsMenu(menu);
}

ActionBar 的理念与我在询问时所设想的略有不同。来自Android developer guide:

当您想在活动中提供导航选项卡时,使用操作栏的选项卡是一个不错的选择(而不是使用 TabWidget),因为系统会针对不同的屏幕尺寸调整操作栏选项卡——将它们放置在主操作栏中当屏幕足够宽时,或者当屏幕太窄时在一个单独的栏(称为“堆叠的操作栏”)中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多