MenuTest

来源:互联网 发布:Java项目有感叹号 编辑:程序博客网 时间:2024/06/14 21:31

XML代码

<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    app:layout_behavior="@string/appbar_scrolling_view_behavior"    tools:context="com.example.zhang.menutest.MainActivity"    tools:showIn="@layout/activity_main">    <EditText        android:id="@+id/etTest"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="测试一下"/></RelativeLayout>

java代码

package com.example.zhang.menutest;import android.graphics.Color;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.Menu;import android.view.MenuItem;import android.view.SubMenu;import android.widget.EditText;public class MainActivity extends AppCompatActivity {    //定义“字体大小”选项菜单的标识    //这里设置16进制数就是为了在内存中缓存,方便后文判断??(是不是这样理解?)    //这里直接写final int FONT_10;应该也可以的吧?(不可以的,因为要判断id)    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 etTest;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        etTest = (EditText) findViewById(R.id.etTest);        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);        setSupportActionBar(toolbar);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        //向菜单中添加“字体大小”的选项菜单        SubMenu fontMenu = menu.addSubMenu("字体菜单");        //设置菜单的图标,测试机并不会显示图标        fontMenu.setIcon(R.drawable.font);        //设置菜单头的图标,测试机并不会显示图标        fontMenu.setHeaderIcon(R.drawable.font);        //设置菜单头的标题        fontMenu.setHeaderTitle("选择字体大小");        //给“字体大小”添加子菜单菜单项        //特别注意:        // 第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。        //第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个item ID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。        //第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。0代表最优先显示,即在第一行显示        //第四个String类型的title参数,表示选项中显示的文字。        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.add(0, PLAIN_ITEM, 0, "普通菜单项");        //添加“字体选项菜单        SubMenu colorMenu = menu.addSubMenu("字体颜色");        colorMenu.setIcon(R.drawable.color);        colorMenu.setHeaderIcon(R.drawable.color);        //为“字体颜色”添加子菜单        colorMenu.add(0, FONT_RED, 0, "红色字体");        colorMenu.add(0, FONT_BLUE, 0, "蓝色字体");        colorMenu.add(0, FONT_GREEN, 0, "绿色字体");        //返回值构建好的菜单,当用户单击时,即显示菜单        return super.onCreateOptionsMenu(menu);    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        //获取当前选中的子菜单项的ID,然后判断更改EditText属性        int id = item.getItemId();        switch (id){            case FONT_10:                etTest.setTextSize(10 * 2);                break;            case FONT_12:                etTest.setTextSize(12 * 2);                break;            case FONT_14:                etTest.setTextSize(14 * 2);                break;            case FONT_16:                etTest.setTextSize(16 * 2);                break;            case FONT_18:                etTest.setTextSize(18 * 2);                break;            case FONT_RED:                etTest.setTextColor(Color.RED);                break;            case FONT_BLUE:                etTest.setTextColor(Color.BLUE);                break;            case FONT_GREEN:                etTest.setTextColor(Color.GREEN);                break;        }            return true;    }}

效果
1

2

3

0 0