当菜单中只有一个项目时,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"
我在我的应用程序中使用应用程序兼容性主题,在操作栏中我有一个菜单,其中一个项目应该显示为图标 - 但我得到的是这样的菜单按钮
这是我的菜单代码 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"