我知道有很多ActionBar问题,但他们似乎无法解决我的问题。我可以在我的模拟器中吐出ActionBar,但是当我在我的设备上运行我的程序(Nexus 7肖像模式)时,ActionBar将不会分裂。所有的图标都堆积在一起。在顶部,甚至我的标签创建一个下拉列表。我试图通过使菜单项名称非常长来强制解决问题,我确实将它们设置为:android:showAsAction =" always | withText"。只是为了确定,我已经采用了示例代码,在模拟器上运行它看到它工作,然后把它放在我的设备上无济于事。这是我的清单:
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MyTheme">
<activity
android:name=".MainActivity"
android:uiOptions="splitActionBarWhenNarrow"
android:label="@string/title_activity_main">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我已经在网上搜索过但无法找到解决方案。任何帮助表示赞赏。
答案 0 :(得分:7)
根据this SO item,仅当可用宽度小于480dp时才会拆分ActionBar。根据Google的Dianne Hackborn this article的说法,Nexus 7的纵向宽度为600dp。所以这就是没有分裂的原因。
我同意你的看法,拆分应取决于可用空间与要显示的项目之间的关系,而不是仅取决于可用空间。
答案 1 :(得分:7)
我知道这个问题已经很老了,但是我已经找到了一种方法可以强制将操作栏强加到Nexus 7(以及可能的其他设备)上,但我认为我会分享我的解决方案:
将此代码放在您的活动中:
/**
* {@inheritDoc}
*/
@Override
public Resources getResources() {
return new ResourceFix(super.getResources());
}
private class ResourceFix extends Resources {
private int targetId = 0;
ResourceFix(Resources resources) {
super(resources.getAssets(), resources.getDisplayMetrics(), resources.getConfiguration());
targetId = Resources.getSystem().getIdentifier("split_action_bar_is_narrow", "bool", "android");
}
/**
* {@inheritDoc}
*/
@Override
public boolean getBoolean(int id) throws Resources.NotFoundException {
return targetId == id || super.getBoolean(id);
}
}
这将强制内部&#34; split_action_bar_is_narrow&#34;值为true。 这可能不是最好的方法,但它似乎是我找到的唯一方式。