在ActionBar中强制折叠选项卡

时间:2012-07-14 14:08:36

标签: android android-tabhost android-actionbar actionbarsherlock android-tabs

我正在使用ActionBarSherlock库开发Android应用程序。在一项活动中,我使用标签式导航和折叠的ActionBar(底部的操作项)。

在此图片中,您可以看到{{1>}处于当前状态:标签正在第二行中推送。

Current ActionBar


在下图中,您可以看到Activity我想要的方式:标签应位于顶行,而不是第二行。我已经阅读了ActivityActionBar文档,但没有办法强制执行此操作。

The wished ActionBar layout

这是当前代码,用于创建ActionBarSherlock

ActionBar

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

有一个反映'黑客'来做到这一点。我不相信这个解决方案,我在StackOverflow问题replicate ActionBar Tab(s) with custom view中找到了。

//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