Android菜单(上下文菜单)(选项菜单)

菜单资源文件通常放置在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.上下文菜单  长按注册的控件显示菜单

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);
    }
}
    

你可能感兴趣的:(android)