我有一个带有徽标,标题,2个标签和搜索功能的操作栏。 在手机上(3.5")一切正常。 操作栏有2行。徽标标题和搜索功能显示在第一行,选项卡显示在第二行。
在我的平板电脑(7")上,每一行都显示在一行上。但是当我单击搜索图标时,选项卡将转换为列表。
我怎样才能将(sherlock)动作栏分成2行7" tabblet? 或者还有其他方法可以解决这个问题吗?
答案 0 :(得分:5)
在ActionBarSherlock中,有一个布尔值(abs__action_bar_embed_tabs),用于确定Tabs是否应嵌入ActionBar中,并且该值存储在两个文件中。
这意味着仅当设备的宽度大于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);