如何在actionBar菜单中强制使用3个点?

时间:2014-06-05 09:26:47

标签: java android menu android-actionbar

我有以下菜单xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

            <item
        android:id="@+id/action_totalCerdit"
        android:showAsAction="always"
        android:title="-100"/>

    <item
        android:id="@+id/actions_saved"
        android:icon="@android:drawable/btn_star"
        android:showAsAction="always"
        android:title="@string/action_settings"/>

    <!-- Settings, should always be in the overflow -->

    <item
        android:id="@+id/action_settings"
        android:showAsAction="never"
        android:title="@string/action_settings"/>

    <item
        android:id="@+id/action_full_text"
        android:showAsAction="never"
        android:title="@string/action_full_list"/>
    <item
        android:id="@+id/action_saved_text"
        android:showAsAction="never"
        android:title="@string/action_favorites_list"/>

        <item
        android:id="@+id/logout"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/log_out"/>
</menu>

在Samsung Note2上部署时,操作栏会显示所有不具有android:showAsAction="never"的项目。按下三星内置左下方菜单按钮时会显示具有该属性的那些。

在对Nexus4进行描述时,我看到所有带有android:showAsAction="never"的项目作为&#34; 3点&#34;的子菜单项目

如何使这3个点出现并在note2中表现与nexus4相同?

3 个答案:

答案 0 :(得分:1)

Compatibility Definition Document中,Google表示Android 4.4+设备不应为菜单功能实现专用的物理按钮。所以以后的设备会很好。

但似乎NoteII在Action栏中设置了Overflow菜单按钮(3点菜单按钮)。如果你真的想在NoteII上做这件事,我发现了一个旧的黑客:

try {
 ViewConfiguration config = ViewConfiguration.get(this);
 Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");

 if (menuKeyField != null) {
 menuKeyField.setAccessible(true);
 menuKeyField.setBoolean(config, false);
 }
} catch (Exception e) {
// presumably, not relevant
}

答案 1 :(得分:0)

试试这个:

@Override
public boolean onPrepareOptionsMenu (Menu menu) {
    return true;
}

将此添加到您的所有Activity课程。现在,您将在Note 2和Nexus 4上看到相同的内容。

答案 2 :(得分:0)

只需实施此方法

@Override
public boolean onCreateOptionsMenu(Menu menu) {present.
    getMenuInflater().inflate(R.menu.yourfile.xml, menu);
    return true;
}