我正在使用android支持compat操作栏库来支持2.2及更高版本。
我能够显示菜单,我的一个按钮是一个溢出按钮(3个点)。
单击时,我想显示溢出菜单。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
super.onBackPressed();
return true;
case R.id.action_overflow:
openOptionsMenu();
return true;
}
return super.onOptionsItemSelected(item);
}
我有这个,但它没有用。
有谁知道什么是错的?
感谢。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:sord.ids_connect="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_overflow"
android:icon="@drawable/ic_action_secure"
android:title="@string/action_overflow"
sord.ids_connect:showAsAction="ifRoom" />
</menu>
答案 0 :(得分:1)
overflow
菜单背后的基本思想是,默认情况下收集并放入不重要的选项。您不必自己创建溢出菜单。如果您放置项目的showAsAction="never"
,它将自动放在溢出菜单中。
例如
<item
android:id="@+id/action_settings"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_refresh"
android:showAsAction="never"
android:title="@string/action_refresh"/>
<item
android:id="@+id/action_about"
android:showAsAction="never"
android:title="@string/action_about"/>
所有这些因为它们showAsAction="never"
会自动放在溢出菜单上。
在你的switch语句中你可以简单地声明:
switch (item.getItemId()) {
case android.R.id.home:
super.onBackPressed();
return true;
case R.id.action_settings:
//something
break;
case R.id.action_refresh:
//something
break;
...
}
等等。但如果有硬件菜单按钮,则不会显示overflow
。为此,您可以参考following。