当菜单中只有一个项目时,Actionbar 显示下拉菜单

Actionbar shows dropdown when only one item in the menu

我在我的应用程序中使用应用程序兼容性主题,在操作栏中我有一个菜单,其中一个项目应该显示为图标 - 但我得到的是这样的菜单按钮

这是我的菜单代码 xml:

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

    <item
        android:id="@+id/action_play"
        android:icon="@drawable/play"
        android:orderInCategory="100"
        android:showAsAction="always"/>

</menu>

下面是我如何初始化操作栏的代码:

getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setTitle(title);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(false);

并显示菜单:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.names, menu);
        playStop = menu.findItem(R.id.action_play);
        return true;
    }

有人可以帮我显示菜单项吗?

谢谢

使用支持库,android:showAsAction 将无法执行其任务。所以你的菜单声明不正确。来自 documentation

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          yourapp:showAsAction="ifRoom"  />
    ...
</menu>

如果操作栏中的项目没有足够的空间,它将出现在操作溢出中。

Using XML attributes from the support library

Notice that the showAsAction attribute above uses a custom namespace defined in the tag. This is necessary when using any XML attributes defined by the support library, because these attributes do not exist in the Android framework on older devices. So you must use your own namespace as a prefix for all attributes defined by the support library.


所以你的菜单 xml 应该是

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

    <item
        android:id="@+id/action_play"
        android:icon="@drawable/play"
        android:orderInCategory="100"
        app:showAsAction="always"/>

</menu>

您需要使用

app:showAsAction="always" 

而不是

android:showAsAction="always"