如何在<4.0设备上使用Actionbarsherlock强制Actionbar中的溢出菜单

Kin*_*hah 8 android actionbarsherlock android-actionbar

可能重复:
ActionBarSherlock和HoloEverywhere - 强制溢出?

我正在使用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);
    }
}
Run Code Online (Sandbox Code Playgroud)

清单: -

<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>
Run Code Online (Sandbox Code Playgroud)

菜单配置: -

<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"/>
Run Code Online (Sandbox Code Playgroud)

我想显示溢出菜单..所以请提示我..在此先感谢..

Sid*_*ele 15

注意:有了这个建议,我建议对任何读者使用ForceOverFlow.这只是列出了使其工作的可能性(迫使它工作).对每一个他自己.有些人可能想要它,也喜欢它.其他人可能没有.

我可能在猜测,但也许,这可能会为你做.

你可以认为这是一个黑客攻击,但我以前使用它来强制我的一个应用程序中的溢出菜单,它的工作原理.

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();
}
Run Code Online (Sandbox Code Playgroud)

另外,MisterSmith的第二个链接有一个解决方案,我的答案就在其中.Commonsware在这里强调了一些关于强制OverFlow菜单的想法:如何在ICS中控制OverFlow菜单的使用

编辑:在输入此建议时,您添加了评论.为了回应这一点,我想指出杰克沃顿拿出.ForceOverFlow主题.我没有尝试使用4.2.0版本,但是使用自定义主题,它可能会起作用.如果绝对必须使用ForceOverFlow,则可能必须使用旧版本.请在此处阅读我的回答:https://stackoverflow.com/a/13180285/450534.有些东西可能会让它发挥作用.

编辑2:正如OP在评论中指出的那样,Demos Sample APK实际上是ForceOverFlow中的动作栏Action Modes.在检查github上的相关Java文件之后,我有一种感觉,答案可能在于3个Java文件.

  1. 活动ActionModes增加menu items以非常规的方式:https://github.com/JakeWharton/ActionBarSherlock/blob/master/samples/demos/src/com/actionbarsherlock/sample/demos/ActionModes.java(53号线)
  2. ActionModeABS库中的Java文件:https://github.com/JakeWharton/ActionBarSherlock/blob/master/library/src/com/actionbarsherlock/view/ActionMode.java
  3. MenuItemJava的文件ABS图书馆再次一部分:https://github.com/JakeWharton/ActionBarSherlock/blob/master/library/src/com/actionbarsherlock/view/MenuItem.java