如何创建带有自定义视图和选项卡的Android ActionBar

5
我想创建带有自定义视图 (DISPLAY_SHOW_CUSTOM) 的选项卡ActionBar (NAVIGATION_MODE_TABS)。它应该像这样:
我只需要能够通过顶部按钮在活动之间导航 - 就像在正常的非选项卡模式下使用ActionBar一样,并且能够在第二行切换选项卡。如果我将ActionBar设置为选项卡模式,则自定义视图会消失,似乎选项卡模式和自定义视图是互斥的... 这真的可能吗?
还有更多可能的方法可以在没有ActionBar的情况下完成。通常,我会创建一个带有按钮的布局,在TabActivity中包含它(现在已过时),就这样。但我觉得这不是最好的解决方案,所以任何帮助或建议都将不胜感激。
先谢谢了。
编辑:经过一番研究,我发现它确实有效,只是不会显示在我的4英寸屏幕上。 但是它仍然不能按照我预期的工作。在更宽的屏幕上,自定义视图显示在选项卡的右侧 - 这是可以的,但在4英寸的手机屏幕上根本不会显示。
我认为最好的解决方案是使用ActionBarSherlock库(我不喜欢使用已过时的功能,并且我的应用程序还必须在sdk11版本以下的设备上运行),和片段 - 一个用于顶部ActionBar,另一个用于选项卡视图。

你可能需要重新考虑使用操作栏和选项卡。屏幕空间有限,过多的导航控件只会使你的应用程序变得混乱。从我所看到的情况来看,在3.5英寸甚至4英寸的手机上,这将占据几乎1/3甚至更多的屏幕空间。这只是一个想法 :), 并且在研究方面做得很好,这是学习的最佳方式。 - Jack
很遗憾,没有什么可以重新考虑的,这是我的客户要求...但是,最终我找到了一个优雅而简单的解决方案,之前我忽略了它。将顶部行的按钮添加为optionMenu项 - 几行代码和布局就完成了。问题可以关闭了... - vitakot
1个回答

0

顶部行中的按钮必须作为optionMenu项添加:

@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开发者指南:

当您想在 Activity 中提供导航选项卡时,使用操作栏选项卡是一个很好的选择(而不是使用 TabWidget),因为系统会根据不同的屏幕大小调整操作栏选项卡的位置 - 如果屏幕足够宽,则将它们放置在主操作栏中;如果屏幕太窄,则放置在独立的栏中(称为“堆叠式操作栏”)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接