Android入门之SubMenu的实现详解

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

Android入门之SubMenu的实现详解

TGITCIC   2022-11-26 我要评论

简介

我们延用在上一篇Menu篇里的例子,把这个ContextMenu里套一层子菜单。

其实,它的原理很简单。

就是在ContextMenu的:public void onCreateContextMenu方法里,用inflator.inflate(R.menu.sub_menu, menu);加载一个外部的sub_menu。

项目结构

很简单,一点不难。来看代码。

前端代码

sub_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/submenu" android:title="子菜单使用演示~">
        <menu>
            <group android:checkableBehavior = "none">
                <item android:id="@+id/one" android:title = "子菜单一"/>
                <item android:id="@+id/two" android:title = "子菜单二"/>
                <item android:id="@+id/three" android:title = "子菜单三"/>
            </group>
        </menu>
    </item>
</menu>

后端代码

MainActivity.java

package org.mk.android.demosubmenu;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends AppCompatActivity {
    private Button btnShowMenu;
    private TextView viewContext;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewContext=(TextView)findViewById(R.id.viewContext);
        registerForContextMenu(viewContext);
    }
    @Override
    //重写上下文菜单的创建方法
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenu.ContextMenuInfo menuInfo) {
 
        //子菜单部分:
        MenuInflater inflator = new MenuInflater(this);
        inflator.inflate(R.menu.sub_menu, menu);
        super.onCreateContextMenu(menu, v, menuInfo);
 
 
    }
 
    //上下文菜单被点击是触发该方法
    @Override
    public boolean onContextItemSelected(MenuItem item) {
 
 
        switch (item.getItemId()) {
            case R.id.one:
                Toast.makeText(MainActivity.this,"你点击了子菜单一",Toast.LENGTH_SHORT).show();
                break;
            case R.id.two:
                item.setCheckable(true);
                Toast.makeText(MainActivity.this,"你点击了子菜单二",Toast.LENGTH_SHORT).show();
                break;
            case R.id.three:
                Toast.makeText(MainActivity.this,"你点击了子菜单三",Toast.LENGTH_SHORT).show();
                item.setCheckable(true);
                break;
        }
        return true;
 
    }
}

运行效果

我们以Toast来显示不同的子菜单选择后的效果即可。

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们