我有一个带有徽标、标题、2 个选项卡和搜索功能的操作栏。在手机(3.5 英寸)上一切正常。操作栏有 2 行。徽标标题和搜索功能出现在第一行,选项卡出现在第二行。
在我的平板电脑 (7") 上,所有内容都显示在一行上。但是当我单击搜索图标时,选项卡将转换为列表。
如何在我的 7" 平板电脑上将 (sherlock) 操作栏分成 2 行?或者有其他方法可以解决这个问题吗?
我有一个带有徽标、标题、2 个选项卡和搜索功能的操作栏。在手机(3.5 英寸)上一切正常。操作栏有 2 行。徽标标题和搜索功能出现在第一行,选项卡出现在第二行。
在我的平板电脑 (7") 上,所有内容都显示在一行上。但是当我单击搜索图标时,选项卡将转换为列表。
如何在我的 7" 平板电脑上将 (sherlock) 操作栏分成 2 行?或者有其他方法可以解决这个问题吗?
在 ActionBarSherlock 中,有一个布尔值(abs__action_bar_embed_tabs)决定了 Tabs 是否应该嵌入到 ActionBar 中,这个值存储在两个文件中。
这意味着仅当设备宽度大于 480dp 时才会嵌入选项卡。
如果你想自己控制,你可以在自己的项目中创建 values-w480,并将 abs__action_bar_embed_tabs 设置为 false 以覆盖库项目中的值。
我找到了一个解决方案来分隔代码中的选项卡。
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);
}
}
但现在我有一个新问题。选项卡不会完全填满选项卡栏。 操作栏选项卡不填满选项卡栏
这种方法对我来说很好:
只需放置导航方法,添加添加选项卡后:
... // adding tabs
bar.setNavigationMode(ActionBar.Navigation_mode_tabs);