如果没有空间,操作栏将标签转换为列出导航

时间:2012-11-26 14:06:01

标签: android android-actionbar actionbarsherlock

我有一个带有徽标,标题,2个标签和搜索功能的操作栏。 在手机上(3.5")一切正常。 操作栏有2行。徽标标题和搜索功能显示在第一行,选项卡显示在第二行。 enter image description here

在我的平板电脑(7")上,每一行都显示在一行上。但是当我单击搜索图标时,选项卡将转换为列表。 tabs as list navigation

我怎样才能将(sherlock)动作栏分成2行7" tabblet? 或者还有其他方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:5)

在ActionBarSherlock中,有一个布尔值(abs__action_bar_embed_tabs),用于确定Tabs是否应嵌入ActionBar中,并且该值存储在两个文件中。

  • 在values / abs__bools.xml中。这是假的。
  • 在values-w480 / abs__bools.xml中。这是真的。

这意味着仅当设备的宽度大于480dp时才会嵌入Tabs。

如果你想自己控制它,你可以在自己的项目中创建值-w480,并将abs__action_bar_embed_tabs设置为false以覆盖库项目中的值。

答案 1 :(得分:4)

我找到了一个在代码中分隔标签的解决方案。

private void embeddedTabs(Object actionBar, Boolean embed_tabs) {


try {

        if (actionBar instanceof ActionBarWrapper) {
            //ICS and forward
            try {
                Field actionBarField = actionBar.getClass().getDeclaredField("mActionBar");
                actionBarField.setAccessible(true);
                actionBar = actionBarField.get(actionBar);
            } catch (Exception e) {
                Log.e("", "Error enabling embedded tabs", e);
        }
    }
    Method setHasEmbeddedTabsMethod = actionBar.getClass().getDeclaredMethod("setHasEmbeddedTabs", boolean.class);
    setHasEmbeddedTabsMethod.setAccessible(true);
    setHasEmbeddedTabsMethod.invoke(actionBar, embed_tabs);
} catch (Exception e) {
    Log.e("", "Error marking actionbar embedded", e);
}

}

但现在我遇到了一个新问题。标签不会完全填充标签栏。 Actionbar tabs don't fill the tabbar

答案 2 :(得分:1)

这种方法适合我:

添加添加标签后,只需将导航方法投入使用:

... // adding tabs

bar.setNavigationMode(ActionBar.Navigation_mode_tabs);