可能重复:
ActionBarSherlock & HoloEverywhere - Forcing Overflow?
我正在使用ActionbarSherLock库在预姜饼设备上显示Actionbar ..
我想要动作栏上的溢出菜单..我已经搜索了很多,我知道有硬件菜单按钮然后溢出菜单的设备将不会显示..
我也查看了该解决方案的ActionbarSherlock示例演示,但仍然无法获得解决方案..
我为动作栏创建了演示,当在没有菜单按钮的设备上进行模拟时,它将显示溢出菜单,但如果设备有菜单按钮,则溢出菜单将不会显示..
以下是我的配置: -
public class MainActivity extends SherlockActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
setTheme(R.style.Theme_Sherlock);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=getSupportMenuInflater();
inflater.inflate(R.menu.activity_main, menu);
// return true;
return super.onCreateOptionsMenu(menu);
}
}
清单: -
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="demo.menu.actionbar_using_lib"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.Sherlock"
>
<activity
android:name=".MainActivity"
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>
菜单配置: -
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/save"
android:title="@string/menu_save"
android:icon="@drawable/ic_action_search"
android:showAsAction="ifRoom|withText"/>
<item android:id="@+id/setting"
android:title="@string/menu_settings"
android:icon="@drawable/ic_action_search"
android:showAsAction="ifRoom|withText"/>
<item android:id="@+id/search"
android:title="@string/menu_search"
android:icon="@drawable/ic_action_search"
android:showAsAction="never"/>
<item android:id="@+id/refresh"
android:title="@string/menu_refersh"
android:icon="@drawable/ic_action_search"
android:showAsAction="never"/>
<item android:id="@+id/edit"
android:title="@string/menu_edit"
android:icon="@drawable/ic_action_search"
android:showAsAction="never"/>
<item android:id="@+id/delete"
android:title="@string/menu_delete"
android:icon="@drawable/ic_action_search"
android:showAsAction="never"/>
我想显示溢出菜单..所以请告诉我.. 在此先感谢..
答案 0 :(得分:15)
注意:有了这个建议,我不建议对任何读者使用ForceOverFlow。这只是列出了使其工作的可能性(迫使它工作)。对每一个他自己。有些人可能想要它,也喜欢它。其他人可能没有。
我可能在猜测,但也许,这可能适合你。
您可以将此视为 hack ,但我之前使用它来强制在我的某个应用中使用“溢出”菜单并且它可以正常工作。
try {
ViewConfiguration config = ViewConfiguration.get(MainPage.this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
e.printStackTrace();
}
此外, MisterSmith 的第二个链接有一个解决方案,其中包含我的答案。 Commonsware 在这里强制要求强制OverFlow菜单:How To Control use of OverFlow Menu in ICS
编辑:在输入此建议时,您添加了评论。为了回应这个问题,我想指出 Jake Wharton 取出.ForceOverFlow主题。我没有尝试使用版本 4.2.0 ,但是使用自定义主题,它可能会起作用。如果绝对必须使用ForceOverFlow,则可能必须使用旧版本。请在此处阅读我的回答:https://stackoverflow.com/a/13180285/450534。有些东西可能会让它发挥作用。
编辑2:正如OP在评论中指出的那样,Demos Sample APK实际上是ForceOverFlow Action Modes
中的操作栏。在检查github上的相关Java文件之后,我有一种感觉,答案可能就是3个Java文件。
ActionModes
以非常规方式添加menu items
:https://github.com/JakeWharton/ActionBarSherlock/blob/master/samples/demos/src/com/actionbarsherlock/sample/demos/ActionModes.java(第53行)ActionMode
Java文件:https://github.com/JakeWharton/ActionBarSherlock/blob/master/library/src/com/actionbarsherlock/view/ActionMode.java MenuItem
Java文件再次成为ABS库的一部分:https://github.com/JakeWharton/ActionBarSherlock/blob/master/library/src/com/actionbarsherlock/view/MenuItem.java