我有一个可以在不同设备上正常运行的应用程序,包括Google Nexus 4(4.4.2),Nexus S(4.1.2)和Samsung S3(4.1。*),但是在S3和S4上出现菜单膨胀显示问题4.2.2+(之前未经确认)。
发生的情况是在“纵向”模式下,菜单出现在“选项卡片段”下方(并可能在整个视图下方)并展开。在“景观”中,菜单会出现并展开以覆盖整个视图,但要高于一切。在纵向模式下,没有文字或图标出现(或者至少在顶部没有显示),但在横向模式下却显示。
菜单已经存在,并且由以下内容涵盖:
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.actionmode, menu);
return true;
}
R.menu.actionmode:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/actionmode_delete"
android:title="@string/label_actionmode_delete"
android:icon="@drawable/actionmode_discard"
android:showAsAction="always|withText"/>
</menu>
我不知道是什么原因导致三星S3、4.2及更高版本的S4出现此问题。
更新:
事实证明,三星在我的风格中对这行代码做了奇怪的事情:
<item name="android:actionModeStyle">@style/MyActionMode</item>
删除此行后,UI可以正常工作,但是我仍然需要找到一种方法来应用所需的样式。
最佳答案
三星在我的风格中对这行代码做了奇怪的事情:
<item name="android:actionModeStyle">@style/MyActionMode</item>
幸运的是,我只需要设置背景色,因此我可以执行以下操作:
<item name="android:actionModeBackground">@color/custom_main_app_color</item>
我知道这并不能真正解决问题,它实际上避开了问题,但是对我有用。