7

我有一个带有徽标、标题、2 个选项卡和搜索功能的操作栏。在手机(3.5 英寸)上一切正常。操作栏有 2 行。徽标标题和搜索功能出现在第一行,选项卡出现在第二行。 在此处输入图像描述

在我的平板电脑 (7") 上,所有内容都显示在一行上。但是当我单击搜索图标时,选项卡将转换为列表。 选项卡作为列表导航

如何在我的 7" 平板电脑上将 (sherlock) 操作栏分成 2 行?或者有其他方法可以解决这个问题吗?

4

3 回答 3

5

在 ActionBarSherlock 中,有一个布尔值(abs__action_bar_embed_tabs)决定了 Tabs 是否应该嵌入到 ActionBar 中,这个值存储在两个文件中。

  • 在值/abs__bools.xml 中。这是错误的。
  • 在 values-w480/abs__bools.xml 中。是真的。

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

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

于 2012-11-27T16:22:54.290 回答
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);
}

}

但现在我有一个新问题。选项卡不会完全填满选项卡栏。 操作栏选项卡不填满选项卡栏

于 2012-11-27T12:05:26.593 回答
1

这种方法对我来说很好:

只需放置导航方法,添加添加选项卡后:

... // adding tabs

bar.setNavigationMode(ActionBar.Navigation_mode_tabs);

于 2013-08-26T09:04:36.520 回答