我想点击MenuItem打开一个contextMenu。如何在我的活动中为选项菜单项注册上下文菜单。
在这种情况下我可以在registerForContextMenu(?view?);
传递哪个视图?
这是我的menuItem
<?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_change_font"
android:orderInCategory="100"
android:title="@string/pref_font_size_title"
app:showAsAction="never"
android:visible="true"/>
</menu>
这是我的contextMenu
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item android:id="@+id/font_small"
android:title="@string/small"/>
<item android:id="@+id/font_medium"
android:title="@string/medium"/>
<item android:id="@+id/font_large"
android:title="@string/large" />
</group>
</menu>
这是OnCreateMenuItem方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_font_size, menu);
return true;
}
这是我的OnOptionsItemSelected方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
finish();
} else if(id == R.id.action_change_font){
// want to open context menu
}
return super.onOptionsItemSelected(item);
}
答案 0 :(得分:0)
像这样将上下文菜单移动到根菜单中。选择“更改字体”项将自动打开一个子菜单。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_change_font"
android:orderInCategory="100"
android:title="@string/pref_font_size_title"
app:showAsAction="never"
android:visible="true">
<menu>
<group android:checkableBehavior="single">
<item android:id="@+id/font_small"
android:title="@string/small"/>
<item android:id="@+id/font_medium"
android:title="@string/medium"/>
<item android:id="@+id/font_large"
android:title="@string/large" />
</group>
</menu>
</item>
</menu>
处理子菜单直接在onOptionsItemSelected方法中单击。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
finish();
} else if(id == R.id.font_small){
// Change font to small
}
return super.onOptionsItemSelected(item);
}