菜单资源文件通常放置在res\menu目录下,在创建项目时,默认不自动创建menu目录,所以需要手动创建。Android Resource Directory->value menu
菜单资源根元素通常是
标记,子元素为android:id 用于为菜单设置ID android:title 用于为菜单项设置标题 android:alphabeticShortcut 用于为菜单项指定字符快捷键 android:numericShortcut 用于为菜单项指定数字快捷键 android:icon 用于为菜单项指定图标 android:enable 用于指定该菜单项是否可用 android:checkable 用于指定该菜单项是否可选 android:checked 用于指定该菜单项是否选中 android:visible 用于指定该菜单项是否可见
android:id 用于为菜单组设置ID android:heckableBehavior 用于为指定菜单组选择行为,值可以为 none(不可选) 、all(多选) 、 single(单选) android:menuCategory 用于为指定菜单组进行分类,指定优先级,值可以为container、system、secondary和alternative android:enable 用于为指定菜单组中全部菜单项是否可用 android:visible 用于为指定菜单组中全部菜单项是否可见
- "1.0" encoding="utf-8"?>
- <menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:title="item1">item>
- <item android:title="item2">
- <menu>
- <item android:title="item2-1"/>
- <item android:title="item2-2"/>
- menu>
- item>
- <group>
- <item android:title="item3"/>
- <item android:title="item4"/>
- group>
- menu>
1.上下文菜单 长按注册的控件显示菜单
- public class MainActivity extends AppCompatActivity {
- protected void onCreate(Bundle savedInstanceState) {
-
- ... ...
-
- TextView textView=findViewById(R.id.textView);
-
- //注册上下文菜单 长按注册的控件显示菜单
- registerForContextMenu(textView);
- }
-
- public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
- //用于创建菜单(上下文菜单)
- MenuInflater menuInflater=new MenuInflater(MainActivity.this);
- menuInflater.inflate(R.menu.menu1,menu);
- }
-
- public boolean onContextItemSelected(@NonNull MenuItem item) {
- //用于选择菜单项(上下文菜单)
- int groupId=item.getGroupId();
- int itemId=item.getItemId();
- if(groupId==R.id.~){
- ~
- }
- if(itemId==R.id.~){
- ~
- }
- return super.onContextItemSelected(item);
- }
- }
2.选项菜单(隐藏标题栏将无法使用) 点击标题最右侧三个点显示菜单
- public class MainActivity extends AppCompatActivity {
-
- protected void onCreate(Bundle savedInstanceState) {
-
- ... ...
-
- }
-
- public boolean onCreateOptionsMenu(Menu menu) {
- //用于创建菜单(选项菜单)
- MenuInflater menuInflater=new MenuInflater(MainActivity.this);
- menuInflater.inflate(R.menu.menu1,menu);
- return super.onCreateOptionsMenu(menu);
- }
-
- public boolean onOptionsItemSelected(@NonNull MenuItem item) {
- //用于选择菜单项(选项菜单)
- int groupId=item.getGroupId();
- int itemId=item.getItemId();
- if(groupId==R.id.~){
- ~
- }
- if(itemId==R.id.~){
- ~
- }
- return super.onOptionsItemSelected(item);
- }
- }