创建选项菜单OptionsMenu

首先创建选项菜单,然后重写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;

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文件中配置菜单项添加到菜单栏中。看一下效果图:



接下来在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时图标就不会显示。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值