• Android_(菜单)选项菜单


    Android系统中菜单分为Options Menu、Context Menu、Sub Men三种

    Options Menu和Context Menu属于一级菜单

    Sub Menu属于Options Menu和Context Menu的子菜单

    Sub Menu下不能再添加菜单,Android最多只能支持两级菜单

    选项菜单(Options Menu)在当前Activity中按下菜单键就会显示

    Android4.0一下默认在屏幕底部(我也不知道我的为什么默认是在右上角!!!)

    常用以下方法使用 选项菜单

    onCreateOptionsMenu(Menu menu):创建菜单,会在菜单第一次显示时调用。

    onPrepareOnptionsMenu(Menu menu): 准备显示菜单,菜单每次显示前调用。

    onOptionsItemSelected(MenuItem item):菜单项被选中后处理选中的菜单项。

    onMenuOpened(int featureId,Menu menu):菜单被打开的事件。

    onOptionsMenuClosed(Menu menu):菜单被关闭的事件。

    openOptionsMenu():调用打开菜单

    closeOptionsMenu():调用关闭菜单

     

    运行截图:

    程序结构:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        tools:context="com.example.asus.gary_03.MainActivity">
    
    
        <EditText
            android:id="@+id/txt"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="输入文字"
            android:editable="false"
            android:inputType="textPersonName" />
    </LinearLayout>
    activity_main.xml
    package com.example.asus.gary_03;
    
    import android.graphics.Color;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.SubMenu;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        //定义字体大小菜单项的标识
        final int FONT_10 = 0x111;
        final int FONT_12 = 0x112;
        final int FONT_14 = 0x113;
        final int FONT_16 = 0x114;
        final int FONT_18 = 0x115;
        //定义普通菜单项的标识
        final int PLAIN_ITEM = 0x11b;
        //定义字体颜色菜单项的标识
        final int FONT_RED = 0x116;
        final int FONT_BLUE = 0x117;
        final int FONT_GREEN = 0x118;
        private EditText edit;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            edit = (EditText)findViewById(R.id.txt);
        }
    
        public boolean onCreateOptionsMenu(Menu menu) {
            //向menu中添加字体大小的子菜单
            SubMenu fontMenu = menu.addSubMenu("字体大小");
            //设置菜单的图标
            fontMenu.setIcon(android.R.drawable.btn_plus);
            //设置菜单头的图标
            fontMenu.setHeaderIcon(android.R.drawable.btn_default);
            //设置菜单头的标题
            fontMenu.setHeaderTitle("选择字体大小");
            fontMenu.add(0,FONT_10,0,"10号字体");
            fontMenu.add(0,FONT_12,0,"12号字体");
            fontMenu.add(0,FONT_14,0,"14号字体");
            fontMenu.add(0,FONT_16,0,"16号字体");
            fontMenu.add(0,FONT_18,0,"18号字体");
            //向menu中添加普通菜单项
            menu.add(0,PLAIN_ITEM,0,"普通菜单项");
            //向menu中添加文字颜色的子菜单
            SubMenu colorMenu = menu.addSubMenu("字体的颜色");
            colorMenu.setIcon(android.R.drawable.btn_plus);
            colorMenu.setHeaderIcon(android.R.drawable.btn_default);
            colorMenu.setHeaderTitle("选择文字的颜色");
            colorMenu.add(0,FONT_RED,0,"红色");
            colorMenu.add(0,FONT_GREEN,0,"绿色");
            colorMenu.add(0,FONT_BLUE,0,"蓝色");
    
            return super.onCreateOptionsMenu(menu);
        }
    
        public boolean onOptionsItemSelected(MenuItem mi)
        {
            switch(mi.getItemId())
            {
                case FONT_10:
                    edit.setTextSize(10*2);
                    break;
                case FONT_12:
                    edit.setTextSize(12*2);
                    break;
                case FONT_14:
                    edit.setTextSize(14*2);
                    break;
                case FONT_16:
                    edit.setTextSize(16*2);
                    break;
                case FONT_18:
                    edit.setTextSize(18*2);
                    break;
                case FONT_RED:
                    edit.setTextColor(Color.RED);
                    break;
                case FONT_GREEN:
                    edit.setTextColor(Color.GREEN);
                    break;
                case FONT_BLUE:
                    edit.setTextColor(Color.BLUE);
                    break;
                case PLAIN_ITEM:
                    Toast toast = Toast.makeText(MainActivity.this,"单击普通菜单项",Toast.LENGTH_SHORT);
                    toast.show();
                    break;
            }
            return true;
        }
    
    }
    MainActivity

     一、界面布局

      只有一个EditText用来显示测试的内容

    二、实现程序

    1、向menu中添加字体大小的子菜单

      fontMenu.setHeaderTitle("选择字体大小");
            fontMenu.add(0,FONT_10,0,"10号字体");
            fontMenu.add(0,FONT_12,0,"12号字体");
            fontMenu.add(0,FONT_14,0,"14号字体");
            fontMenu.add(0,FONT_16,0,"16号字体");
            fontMenu.add(0,FONT_18,0,"18号字体");
            //向menu中添加普通菜单项
            menu.add(0,PLAIN_ITEM,0,"普通菜单项");
            //向menu中添加文字颜色的子菜单
            SubMenu colorMenu = menu.addSubMenu("字体的颜色");
            colorMenu.setIcon(android.R.drawable.btn_plus);
            colorMenu.setHeaderIcon(android.R.drawable.btn_default);
            colorMenu.setHeaderTitle("选择文字的颜色");
            colorMenu.add(0,FONT_RED,0,"红色");
            colorMenu.add(0,FONT_GREEN,0,"绿色");
            colorMenu.add(0,FONT_BLUE,0,"蓝色");

    2、实现对子菜单项的选择

    onOptionsItemSelected(MenuItem item):菜单项被选中后处理选中的菜单项。

    public boolean onOptionsItemSelected(MenuItem mi)
        {
            switch(mi.getItemId())
            {
                case FONT_10:
                    edit.setTextSize(10*2);
                    break;
                case FONT_12:
                    edit.setTextSize(12*2);
                    break;
                case FONT_14:
                    edit.setTextSize(14*2);
                    break;
                case FONT_16:
                    edit.setTextSize(16*2);
                    break;
                case FONT_18:
                    edit.setTextSize(18*2);
                    break;
                case FONT_RED:
                    edit.setTextColor(Color.RED);
                    break;
                case FONT_GREEN:
                    edit.setTextColor(Color.GREEN);
                    break;
                case FONT_BLUE:
                    edit.setTextColor(Color.BLUE);
                    break;
                case PLAIN_ITEM:
                    Toast toast = Toast.makeText(MainActivity.this,"单击普通菜单项",Toast.LENGTH_SHORT);
                    toast.show();
                    break;
            }
            return true;
        }
    (如需转载学习,请标明出处)
  • 相关阅读:
    3. 操作系统优化
    Linux 目录
    2. 系统的目录结构
    1. 系统管理以及操作命令
    7. 流程控制之for循环
    6. 流程控制之while循环
    我的第一篇博客园随笔
    H5自带进度条&滑块
    DIV水平方向居中的几种方法
    vue入门--简单嵌套路由的一个路径小问题
  • 原文地址:https://www.cnblogs.com/1138720556Gary/p/9281417.html
Copyright © 2020-2023  润新知