强制折叠ActionBar中的选项卡

5
我正在开发一个Android应用程序,使用ActionBarSherlock库。在一个活动中,我使用了选项卡导航和折叠的ActionBar(操作项在底部)。
在这张图片中,您可以看到当前状态下的Activity:选项卡被推到第二行。
以下图片展示了我想要的Activity状态:选项卡应该在顶部行而不是第二行。我已经阅读了ActionBar和ActionBarSherlock文档,但没有找到强制实现此行为的方法。
以下是创建ActionBar所使用的当前代码。
public class AdminActivity extends SherlockFragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_admin);

    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    ActionBar.Tab itemsTab = actionBar.newTab().setText(R.string.label_tab_items);
    ActionBar.Tab usersTab = actionBar.newTab().setText(R.string.label_tab_users);

    actionBar.addTab(itemsTab);
    actionBar.addTab(usersTab);
}

有什么想法吗?

1
你的标题说“防止”,但是你的问题表明实际上你想让“Tabs”折叠到“ActionBar”中。 - adneal
1个回答

5

有一种反射“技巧”可以实现这个。我不对解决方案负责,我在此 StackOverflow 问题 复制使用自定义视图的 ActionBar Tab 中找到了它。

//pre-ICS
if (actionBarSherlock instanceof ActionBarImpl) {
    enableEmbeddedTabs(actionBarSherlock);

//ICS and forward
} else if (actionBarSherlock instanceof ActionBarWrapper) {
    try {
        Field actionBarField = actionBarSherlock.getClass().getDeclaredField("mActionBar");
        actionBarField.setAccessible(true);
        enableEmbeddedTabs(actionBarField.get(actionBarSherlock));
    } catch (Exception e) {
        Log.e(TAG, "Error enabling embedded tabs", e);
    }
} 

//helper method
private void enableEmbeddedTabs(Object actionBar) {
    try {
        Method setHasEmbeddedTabsMethod = actionBar.getClass().getDeclaredMethod("setHasEmbeddedTabs", boolean.class);
        setHasEmbeddedTabsMethod.setAccessible(true);
        setHasEmbeddedTabsMethod.invoke(actionBar, true);
    } catch (Exception e) {
        Log.e(TAG, "Error marking actionbar embedded", e);
    }
}

请参考这篇博客文章:http://sparetimedev.blogspot.co.uk/2012/11/forcing-embedded-tabs-in-actionbar.html

该文章介绍了如何在ActionBar中强制嵌入选项卡。

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