optionMenu(选择菜单)是Android几种菜单中最为常见的一种,具体实现对于新手来说也非常容易上手,这里就optionMenu的实现大体描述如下:
Java代码中动态设置:
复写Activity父类中的onCreateOptionMenu(Menu menu)方法,然后通过Menu的add方法来添加菜单进去。
通过xml静态设置 :
使用菜单布局填充器泵和菜单布局相关联.
设置菜单项点击事件:onOptionsItemSelected(MenuItem item)
OptionMenu的简单实现代码如下:
java代码中:
public class MainActivity extends AppCompatActivity { private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { mTextView = (TextView) findViewById(R.id.optionMenuText); } //重载onCreateOptionsMenu(Menu menu)方法, //并在此方法中添加菜单项,最后返回true,如果false,菜单则不会显示 @Override public boolean onCreateOptionsMenu(Menu menu) { //1.布局中添加 getMenuInflater().inflate(R.menu.optionmenu_item,menu); /** * add()方法的四个参数,依次是: 1、组别,如果不分组的话就写Menu.NONE, 2、Id,这个很重要,Android根据这个Id来确定不同的菜单 3、顺序,那个菜单现在在前面由这个参数的大小决定 4、文本,菜单的显示文本*/ //2.Java代码中添加 menu.add(Menu.NONE,1,Menu.NONE,"java代码中添加OptionMenu1"); menu.add(Menu.NONE,2,Menu.NONE,"java代码中添加Optionmenu2"); return true; } //OptionMenu菜单监听事件 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: String str1 = "您点击了java代码中添加OptionMenu1"; Toast.makeText(MainActivity.this,str1, Toast.LENGTH_SHORT).show(); break; case 2: String str2 = "您点击了java代码中添加OptionMenu1"; Toast.makeText(MainActivity.this,str2, Toast.LENGTH_SHORT).show(); break; case R.id.option_color: mTextView.setTextColor(Color.RED); break; case R.id.font_san: mTextView.setTextSize(mTextView.getTextSize()+1); break; case R.id.font_wu: mTextView.setTextSize(mTextView.getTextSize()+2); break; } return super.onOptionsItemSelected(item); } }xml布局中:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="zhanghao.optionmenudemo.MainActivity"> <TextView android:id="@+id/optionMenuText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="OptionMenu选择菜单"/> </RelativeLayout>res资源文件夹下的menu布局:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/option_color" app:showAsAction="never" android:title="optionMenu-->改变字体颜色"/> <!--二级菜单--> <item android:id="@+id/option_textSize" app:showAsAction="never" android:title="optionMenu-->改变字体大小"> <menu> <group> <item android:title="字体大小为30sp" android:id="@+id/font_san" app:showAsAction="never"> </item> <item android:id="@+id/font_wu" app:showAsAction="never" android:title="字体大小为50sp"> </item> </group> </menu> </item> </menu>