Android之OptionMenu菜单的使用
2017-02-21 20:47
435 查看
要想在一个Activity中使用OptionMenu菜单,首先需要在res文件夹下创建一个存放menu资源文件的文件夹,然后再在这个文件夹下创建一个menu资源文件(右键->new->Menu resource file)。
创建之后会生成一个如下的menu资源文件
然后我们根据项目要求完成这个资源文件如下,一个
为了方便以后回来可以看懂,将string.xml文件也一并放上
主Activity的布局文件就不放了,就是一个TextView用来演示效果的。
接下来是主Activity的逻辑Java代码,首先我们需要创建一个OptionMenu,因此我们要重写onCreateOptionsMenu方法
其中inflate方法中的第一个参数就是我们之前写的菜单资源文件id,第二个参数就是一个菜单对象,这里直接使用onCreatOptionMenu方法传入的menu对象即可。
然后我们需要再重写onOptionItemSelected方法来实现菜单项被点击后的监听事件
最终效果图如下
当我们点击设置字体颜色的菜单项时,操作字体四个大字会随机变换颜色,当我们点击设置字体大小菜单项时,操作字体四个大字会增大,当我们点击设置字体菜单项时,会进入一个新的OptionMenu
创建之后会生成一个如下的menu资源文件
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> </menu>
然后我们根据项目要求完成这个资源文件如下,一个
<item></>就是OptionMenu菜单中的一行,当然我们也可以在一个item下再新建一个新的menu,这时我们就要用到
<item></item>,所以在实际项目开发中推荐直接使用后面的写法。
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <!-- item(菜单项)常用属性 title:设置菜单项显示的文本 orderInCategory:设置同种类菜单项的排列顺序 此外还可以在一个<item></item>中设置一个子菜单,具体操作见第一个item --> <item android:id="@+id/font" android:orderInCategory="1" android:title="@string/font" > <menu> <item android:id="@+id/haha" android:title="@string/font" > </item> </menu> </item> <item android:id="@+id/font_group" android:orderInCategory="4" android:title="@string/font_name" > </item> <item android:id="@+id/action_color" android:orderInCategory="3" android:title="@string/str_color" > </item> <item android:id="@+id/action_style" android:orderInCategory="2" android:title="@string/str_style" > </item> </menu>
为了方便以后回来可以看懂,将string.xml文件也一并放上
<resources> <string name="app_name">MenuDemo</string> <string name="font_name">设置字体大小</string> <string name="str_color">设置字体颜色</string> <string name="str_style">设置字体风格</string> <string name="content">操作字体</string> <string name="font">设置字体</string> </resources>
主Activity的布局文件就不放了,就是一个TextView用来演示效果的。
接下来是主Activity的逻辑Java代码,首先我们需要创建一个OptionMenu,因此我们要重写onCreateOptionsMenu方法
/* 要想在MainActivity中使用OptionMenu,需要重写onCreatOptionMenu(Menu menu)方法 它是一个当Activity创建OptionMenu时回调的方法 若返回值为true则表示可以显示菜单项 若返回值为false则表示无法显示菜单项 */ @Override public boolean onCreateOptionsMenu(Menu menu) { //获得菜单填充器对象,并将菜单填充为一个具体的菜单对象 // MenuInflater menuInflater=getMenuInflater(); // menuInflater.inflate(R.menu.main,menu); //以上两行代码等价为以下一行代码 getMenuInflater().inflate(R.menu.main, menu); return true;//return true表示允许显示菜单项 }
其中inflate方法中的第一个参数就是我们之前写的菜单资源文件id,第二个参数就是一个菜单对象,这里直接使用onCreatOptionMenu方法传入的menu对象即可。
然后我们需要再重写onOptionItemSelected方法来实现菜单项被点击后的监听事件
/* 这个方法在OptionMenu中的某个item被选中时触发,类似于item的监听器 其中回调的参数item表示被选中的item对象 */ @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId=item.getItemId();//获取被选中的item的id switch (itemId) { //点击设置字体大小的item时,MainActivity界面中的字体大小+5 case R.id.font_group: { fontSize += 5; Toast.makeText(MainActivity.this,textView_show.getText(),Toast.LENGTH_SHORT).show(); textView_show.setTextSize(fontSize); break; } case R.id.action_color: { //随机生成颜色 int red= (int) (Math.random()*256); int green= (int) (Math.random()*256); int blue= (int) (Math.random()*256); //Color.rgb(int,int,int)方法可以利用三原色生成任意颜色 textView_show.setTextColor(Color.rgb(red,green,blue)); break; } } return super.onOptionsItemSelected(item); }
最终效果图如下
当我们点击设置字体颜色的菜单项时,操作字体四个大字会随机变换颜色,当我们点击设置字体大小菜单项时,操作字体四个大字会增大,当我们点击设置字体菜单项时,会进入一个新的OptionMenu
相关文章推荐
- Android 菜单(OptionMenu)大全
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android 菜单(OptionMenu)大全 建立你自己的菜单(补充)
- android_菜单(Menu)的使用
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android 菜单(Menu)控件的使用
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android 学习——Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android之Menu菜单 onCreateOptionsMenu使用Menu按键显示不了问题
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Android 菜单(Menu)控件的使用