首先创建选项菜单,然后重写OncreateOptionsMenu,设置菜单项的方式有两种一种是通过menu.add()代码动态设置,另一种通过xml文件来配置。
先看一下通过xml文件的形式来配置菜单项:
在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;getMenuInflater().inflate(R.menu.main, menu);这条语句的意思是将xml文件中配置菜单项添加到菜单栏中。看一下效果图:
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);
}
}
接下来在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;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时图标就不会显示。
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);
}
}