操作栏仅显示菜单中的一个项目时的下拉列表

时间:2015-04-30 05:54:45

标签: android android-actionbar android-actionbar-compat appcompat-v7-r21

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

enter image description here

这是菜单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;
    }

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

由于

2 个答案:

答案 0 :(得分:8)

使用支持库,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>

如果操作栏中的项目空间不足,则会出现在操作溢出中。

  

使用支持库中的XML属性

     

请注意,上面的showAsAction属性使用标记中定义的自定义命名空间。使用任何XML时都需要这样做   由支持库定义的属性,因为这些属性可以   旧设备上的Android框架中不存在。所以你必须使用   您自己的命名空间作为由...定义的所有属性的前缀   支持图书馆。

所以你的菜单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>

答案 1 :(得分:0)

您需要使用

app:showAsAction="always" 

而不是

android:showAsAction="always"