您的位置:首页 > 其它

《疯狂安卓讲义》P186 -- 实例:使用XML资源文件定义菜单

2018-03-12 15:51 567 查看
public class MainActivity extends Activity{    private TextView txt;    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        txt = (TextView) findViewById(R.id.txt);        //为文本框注册上下文菜单        registerForContextMenu(txt);    }
    @Override    public boolean onCreateOptionsMenu(Menu menu)    {        MenuInflater inflater = new MenuInflater(this);        //装填R.menu.my_menu对应的菜单,并添加到menu中        inflater.inflate(R.menu.menu_main, menu);        return super.onCreateOptionsMenu(menu);    }    //创建上下文菜单时触发该方法
    public void onCreateContextMenu(ContextMenu menu, View source)    {        MenuInflater inflater = new MenuInflater(this);        //装填R.menu.context对应的菜单,并添加到menu中        inflater.inflate(R.menu.context, menu);        menu.setHeaderIcon(R.drawable.tools);        menu.setHeaderTitle("请选择背景色");    }    //上下文菜单中菜单项被单击时触发该方法
    @Override    public boolean onContextItemSelected(MenuItem mi)    {        //勾选该菜单项        mi.setChecked(true);        switch (mi.getItemId())        {            case R.id.red:                mi.setChecked(true);                txt.setBackgroundColor(Color.RED);                break;            case R.id.green:                mi.setChecked(true);                txt.setBackgroundColor(Color.GREEN);                break;            case R.id.blue:                mi.setChecked(true);                txt.setBackgroundColor(Color.BLUE);                break;        }        return true;    }
    @Override    //菜单项被单击后的回调方法    public boolean onOptionsItemSelected(MenuItem mi)    {        if(mi.isCheckable())        {            //勾选该菜单项            mi.setChecked(true);        }        //判断单击的是哪个菜单项,并有针对性地做出响应        switch (mi.getItemId())        {            case R.id.font_10:                txt.setTextSize(10 * 2);                break;            case R.id.font_12:                txt.setTextSize(12 * 2);                break;            case R.id.font_14:                txt.setTextSize(14 * 2);                break;            case R.id.font_16:                txt.setTextSize(16 * 2);                break;            case R.id.font_18:                txt.setTextSize(18 * 2);                break;            case R.id.red_font:                txt.setTextColor(Color.RED);                mi.setChecked(true);                break;            case R.id.green_font:                txt.setTextColor(Color.GREEN);                mi.setChecked(true);                break;            case R.id.blue_font:                txt.setTextColor(Color.BLUE);                mi.setChecked(true);                break;            case R.id.plain_item:                Toast toast = Toast.makeText(MainActivity.this, "您单击了普通菜单项", Toast.LENGTH_SHORT);                toast.show();                break;        }        return true;    }}
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">    <!--定义一组单选菜单项-->    <group android:checkableBehavior="single">        <!--定义三个菜单项-->        <item            android:id="@+id/red"            android:title="/red_title"            android:alphabeticShortcut="r"/>        <item            android:id="@+id/green"            android:title="/green_title"            android:alphabeticShortcut="g"/>        <item            android:id="@+id/blue"            android:title="/blue_title"            android:alphabeticShortcut="b"/>    </group></menu>
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">    <item android:title="@string/font_size"        android:icon="@drawable/font">        <menu>            <!--定义一组单选菜单项-->            <group android:checkableBehavior="single">                <!--定义多个菜单项-->                <item                    android:id="@+id/font_10"                    android:title="@string/font_10"/>                <item                    android:id="@+id/font_12"                    android:title="@string/font_12"/>                <item                    android:id="@+id/font_14"                    android:title="@string/font_14"/>                <item                    android:id="@+id/font_16"                    android:title="@string/font_16"/>                <item                    android:id="@+id/font_18"                    android:title="@string/font_18"/>            </group>        </menu>    </item>    <!--定义一个普通菜单-->    <item android:id="@+id/plain_item"        android:title="@string/plain_item">    </item>    <item android:title="@string/font_color"        android:icon="@drawable/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></menu>
<?xml version="1.0" encoding="utf-8"?><!--定义一个线性布局容器--><TextView    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"    tools:context=".MainActivity"    android:id="@+id/txt"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent">

</TextView>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  安卓开发