在某些手机

时间:2015-05-11 04:43:32

标签: android options-menu

该应用运行良好。在具有硬选项菜单按钮的设备上,菜单显示,所以我知道它有效。在某些设备上,它会在右上角显示溢出按钮。

我的测试用例该设备是华硕Zenphone 5没有硬按钮,我也没有得到溢出按钮。但是,当我从按钮单击运行showOptionsMenu()命令时,它会显示选项菜单,并且所有相关事件都不会出现问题。

菜单 - Xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/select" android:title="Select" android:showAsAction="never"></item>
    <item android:id="@+id/add_kid" android:title="Add" android:showAsAction="never"></item>
</menu>

onCreate&amp; onPrepare

@Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {

        getMenuInflater().inflate(R.menu.menu1, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) 
    {
        if(!getCheckInStatus())
        {
            menu.setGroupVisible(R.id.group1,false);
        }
        else
        {
            menu.setGroupVisible(R.id.group1,true);
        }
        return super.onPrepareOptionsMenu(menu);
    }

活动的清单值

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
  .....

<activity
            android:name="com.my.package.MyActivity"
            android:configChanges="orientation|keyboard"
            android:label="@string/app_name"
            android:launchMode="singleInstance"

        >

        </activity>

我真的很感激这方面的任何帮助。

5 个答案:

答案 0 :(得分:3)

我曾经在我的一些项目中遇到同样的问题。我按照下面给出的对我有用的步骤 1.将您的活动扩展到 ActionBarActivity

  1. onCreate 方法

    中调用以下代码
    private void makeActionOverflowMenuShown() 
    {
    //devices with hardware menu button (e.g. Samsung Note) don't show action overflow menu
    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) {
    }
       }
    

答案 1 :(得分:0)

在menu.xml中设置android:showAsAction="ifRoom",按钮会显示。

答案 2 :(得分:0)

试试这样。这对我有用..

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:icon="@drawable/ic_action_overflow"
        android:id="@+id/moreItmes"
        android:showAsAction="never"
        android:title="@string/more">        
        <menu>           
            <item
                android:id="@+id/select"
                android:showAsAction="never"
                android:title="@string/Select"/>

            <item
               android:id="@+id/add_kid"
                android:showAsAction="never"
                android:title="@string/Add"/>
        </menu>
    </item>

</menu>

答案 3 :(得分:0)

正如我在vinay的回答中评论的那样,原因是我正在调试由其他人编写的旧程序。似乎所有都是活动,但我已经更改了目标并编译为22.一旦我将Activity更改为ActionBarActivity,软件菜单按钮上的设备就会出现溢出。虽然那些带有硬选项的菜单按钮没有显示它。

答案 4 :(得分:-1)

Menu - Xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/select" android:title="Select" android:showAsAction="never"></item>
    <item android:id="@+id/add_kid" android:title="Add" android:showAsAction="never"></item>
</menu>

在您的menu.xml中,您只使用showAsAction,因为它永远不会代表永远不要将此项目放在操作栏中。请参阅link了解更多信息