创建选项菜单OptionsMenu

时间:2022-12-15 15:30:50

首先创建选项菜单,然后重写OncreateOptionsMenu,设置菜单项的方式有两种一种是通过menu.add()代码动态设置,另一种通过xml文件来配置。

先看一下通过xml文件的形式来配置菜单项:

创建选项菜单OptionsMenu

在res资源文件夹下有一个menu文件夹,就是在这个文件夹下来配置菜单项的xml文件。下面就来写一下xml文件:

<menu 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="com.example.optionsmenudemo1.MainActivity" >

<item
android:id="@+id/action_settings1"
<span style="white-space:pre"></span>//orderInCategory是用来排序的序号。        android:orderInCategory="100"        android:title="项目一"
<span style="white-space:pre"></span>//showAsAction用来设置该菜单项默认是否显示,never表示默认不显示。        app:showAsAction="never"/>     <item        android:id="@+id/action_settings2"        android:orderInCategory="100"        android:title="项目二"        app:showAsAction="never"/></menu>
简单看一下MainActivity中的程序:

package com.example.optionsmenudemo1;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

return super.onOptionsItemSelected(item);
}

}
getMenuInflater().inflate(R.menu.main, menu);这条语句的意思是将xml文件中配置菜单项添加到菜单栏中。看一下效果图:

创建选项菜单OptionsMenu

接下来在onOptionsItemSelected方法中对菜单项进行监听:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings1:

Toast.makeText(this, "点击了菜单一", 1000).show();
break;
case R.id.action_settings2:

Toast.makeText(this, "点击了菜单二", 1000).show();
break;

default:
break;
}
return super.onOptionsItemSelected(item);
}
接下来通过代码动态设置菜单项:


package com.example.optionsmenudemo1;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
// getMenuInflater().inflate(R.menu.main, menu);
menu.add(1, 100, 101, "菜单项A");
menu.add(2, 101, 102, "菜单项B");
menu.add(1, 102, 103, "菜单项C");
menu.add(2, 103, 104, "菜单项D");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 100:
Toast.makeText(this, "点击了菜单A", 1000).show();
break;
case 101:
Toast.makeText(this, "点击了菜单B", 1000).show();
break;
case 102:
Toast.makeText(this, "点击了菜单C", 1000).show();
break;
case 103:
Toast.makeText(this, "点击了菜单D", 1000).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}

}
menu.add(groupId,itemId,order,title);第一个groupId是用来分组的Id,itemId使我们菜单项的Id,order是菜单项用来排序用的。title是菜单项的文字描述。还可以通过MenuItem item = menu.add(1, 100, 101, "菜单项A");      item.setTitle("aaa");       item.setIcon(R.drawable.ic_launcher);来分别设置文字描述和图标设置,但是当API>=11时图标就不会显示。