2011-11-18 60 views
5

我想创建具有自定义视图(DISPLAY_SHOW_CUSTOM)的选项卡式ActionBar(NAVIGATION_MODE_TABS)。它应该是这样的:如何使用自定义视图和选项卡创建Android ActionBar

enter image description here

我只需要能够顶行中通过按钮在活动导航 - 我会在正常与动作条做的 - 无分页模式,并且还能够切换第二行的制表符。如果我将ActionBar设置为选项卡模式,自定义视图消失,似乎选项卡模式和自定义视图是相互排斥的......它甚至有可能吗?

还有更多的可能的方法如何做到这一点,而没有ActionBar。通常我会用按钮创建一个布局,将其包含在TabActivity(现在已弃用)中,就这些了。但我不认为这将是最好的解决方案,所以任何帮助或建议表示赞赏。

在此先感谢。

编辑:经过一点研究,我发现它的工作原理,它只是不会显示在我的4英寸屏幕上。不过,它仍然没有像我期望的那样工作。在更宽的屏幕上,自定义视图显示在标签的右侧 - 没关系,但在4英寸手机屏幕上根本不显示。

我认为最好的解决方案是使用ActionBarSherlock库(我不喜欢使用不推荐使用的功能,而且我的应用程序也必须在pre-sdk11版本设备上使用)和片段 - 一个用于顶部ActionBar,另一个用于选项卡式视图。

+0

您可能会重新考虑使用操作栏和选项卡。你有一个有限的屏幕来处理,太多的导航控件只会让你的应用程序混乱。从我所看到的情况来看,在3.5英寸甚至4英寸的手机上,如果不是更多的屏幕,这将占用近1/3。只是一个想法:),在研究方面做得很好,它是学习的最佳方式。 – Jack

+0

不幸的是,没有什么可以重新考虑的,这是我的客户的要求......但是,最后,我发现了一个我之前忽略的优雅和简单的解决方案。顶部行的按钮可以添加为optionMenu项目 - 几行和布局完成。这个问题可以被关闭... – vitakot

回答

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); 
} 

的动作条的理念是略有不同的话,我应该问什么时候要。从Android developer guide:

当你想提供导航选项卡中的活动,使用操作栏的选项卡是一个很好的选择(而不是使用TabWidget),因为该系统将针对不同的屏幕操作栏选项卡大小,将它们放置在屏幕足够宽时的主要操作栏,或屏幕太窄时的单独栏(称为“堆叠操作栏”)。