• 使用 xml资源文件定义菜单


    使用 xml资源文件定义菜单
    新版本android已经隐藏menu按键
    menu文件

    <?xml version="1.0" encoding="utf-8"?>
            </group>
        </menu>
    </item>
    <!--定义一个普通菜单项-->
    <item
        android:id="@+id/plain_item"
        android:title="@string/plain_item" />
    <item
        android:icon="@drawable/mia5"
        android:title="@string/font_color">
        <menu>
            <!--            定义一组普通的菜单项-->
            <group>
                <!--                定义三个菜单选项-->
                <item
                    android:id="@+id/red_font"
                    android:title="@string/red_title" />
                <item
                    android:id="@+id/green_font"
                    android:title="@string/green_title" />
                <item
                    android:id="@+id/blue_font"
                    android:title="@string/blue_title" />
    
            </group>
    
        </menu>
    </item>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    <?xml version="1.0" encoding="utf-8"?>

    xml文件

    <?xml version="1.0" encoding="utf-8"?>


    <TextView
    android:layout_width=“wrap_content”
    android:layout_height=“wrap_content”
    android:text=“xml定文件定义菜单”

      android:id="@+id/textview001"/>
    
    • 1

    java文件
    public class MainActivity extends Activity {
    private TextView tv;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);
        tv=findViewById(R.id.textview001);
        //为文本框注册上下文菜单
        registerForContextMenu(tv);
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater=new MenuInflater(this);
        //装填R.menu.text_menu对应的菜单,并添加到menu中
        inflater.inflate(R.menu.text_menu,menu);
        return super.onCreateOptionsMenu(menu);
    }
    
    //創建上下文菜单时触发该方法
    
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        MenuInflater inflater=new MenuInflater(this);
                //装填R.menu.context,menu对应的菜单,并添加到menu中
        inflater.inflate(R.menu.context,menu);
        menu.setHeaderIcon(R.drawable.mia5);
        menu.setHeaderTitle("请选择背景色");
        super.onCreateContextMenu(menu, v, menuInfo);
    }
    //上下文菜单中菜单项被单击时触发该方法
    
    @Override
    public boolean onContextItemSelected(@NonNull MenuItem item) {
        //勾选该菜单项
        item.setChecked(true);
        switch (item.getItemId()){
            case R.id.red:
                item.setChecked(true);
                tv.setBackgroundColor(Color.RED);
                break;
            case R.id.green:
                item.setChecked(true);
                tv.setBackgroundColor(Color.GREEN);
                break;
            case  R.id.blue:
                item.setChecked(true);
                tv.setBackgroundColor(Color.BLUE);
                break;
    
        }        return true;
    }
    //菜单项被单击后的回调方法
    
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        if (item.isCheckable()){
            //勾选该菜单项
            item.setChecked(true);
        }
        //判断单击的是那个才行项,并针对性的做出响应
        switch (item.getItemId()){
            case R.id.font10:
                tv.setTextSize(10*2);
                break;
            case R.id.font12:
                tv.setTextSize(12*2);
                break;
            case R.id.font14:
                tv.setTextSize(14*2);
                break;
            case R.id.font16:
                tv.setTextSize(16*2);
                break;
            case R.id.font18:
                tv.setTextSize(18*2);
                break;
            case R.id.red_font:
                tv.setTextColor(Color.RED);
                item.setChecked(true);
                break;
            case R.id.green_font:
                tv.setTextColor(Color.GREEN);
                item.setChecked(true);
                break;
            case R.id.blue_font:
                tv.setTextColor(Color.BLUE);
                item.setChecked(true);
                break;
            case  R.id.plain_item:
                Toast toast=Toast.makeText(MainActivity.this,"您单击了普通菜单项",Toast.LENGTH_SHORT);
                toast.show();
                break;
    
    
        }
        return true;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96

    }

  • 相关阅读:
    hadoop运行WordCount时,Input path does not exist错误原因
    openvino模型学习-从模型转化流水线制作
    《NFT区块链进阶指南二》Etherscan验证Solidity智能合约(Remix插件验证)
    板卡测评 | 基于TI AM5708开发板——ARM+DSP多核异构开发案例分享
    Linux:进程(二)
    基于单片机设计的水平仪(STC589C52+MPU6050)
    双写绕过 [极客大挑战 2019]BabySQL 1
    FOC程序cubemx配置-ADC配置
    Java面试题07-HashMap的扩容原理
    【WIN32】C++在打印Windows中调用堆栈信息
  • 原文地址:https://blog.csdn.net/weixin_44701192/article/details/125417725