如何对<4.0设备使用Actionbarsherlock强制溢出菜单中的ActionBar [

2019-07-03 16:41发布

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

我使用ActionbarSherLock库对预姜饼设备上显示的ActionBar ..

我想在动作条溢出菜单。我已经搜索了很多,我都知道,有硬件菜单按钮设备,则溢出菜单将不会显示..

而我也看了成该解决方案ActionbarSherlock样品演示,BT我仍然无法得到解决..

我已经创建了动作条的演示,当它没有菜单按钮,然后它会显示溢出菜单装置模仿,但如果设备有菜单按钮,然后溢出菜单将不会显示..

以下是我的配置: -

 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"/>

我想显示溢出menu..so PLZ推荐我..在此先感谢..

Answer 1:

注意:对于这个建议,我推荐使用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();
}

此外,通过MisterSmith第二环节都有各种各样的与我在它的答案的解决方案。 Commonsware已放下一些思考有关强制溢出菜单这里: 如何控制ICS使用溢出菜单的

编辑:尽管输入了这个建议,你可以添加注释。 要以作出回应,我想指出的是, 杰克沃顿拿出.ForceOverFlow主题。 我还没有与4.2.0版本试过,但使用自定义主题,它只是可能会奏效。 如果你绝对必须使用ForceOverFlow,您可能需要使用旧版本。 阅读我的答案在这里: https://stackoverflow.com/a/13180285/450534 。 事情可能只是使它发挥作用。

编辑2:由于在评论中OP指出,该演示样品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. ActionMode在ABS库的Java文件: https://github.com/JakeWharton/ActionBarSherlock/blob/master/library/src/com/actionbarsherlock/view/ActionMode.java
  3. MenuItem的Java文件的ABS图书馆再次一部分: https://github.com/JakeWharton/ActionBarSherlock/blob/master/library/src/com/actionbarsherlock/view/MenuItem.java


文章来源: how to force overflow menu in Actionbar using Actionbarsherlock on < 4.0 devices [duplicate]