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; }}
效果
0 0