Create Menu

Most applications include two kinds of human-computer interactive: Views and Menu.

 

1. options menu

options menu最多只能在屏幕最下面显示6个菜单选项,称为icon menu,icon menu不能有checkable选项。多于6的菜单项会以more icon menu来调出,称为expanded menu。options menu通过activity的onCreateOptionsMenu来生成,这个函数只会在menu第一次生成时调用。任何想改变options menu的想法只能在onPrepareOptionsMenu来实现,这个函数会在menu显示前调用。onOptionsItemSelected 用来处理选中的菜单项。

(1) options_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
	<group>
		<item android:id="@+id/item1" 
			android:title="Item1"
			android:icon="@android:drawable/ic_dialog_alert"
		/>
		<item android:id="@+id/item2" 
			android:title="Item2"
			android:icon="@android:drawable/ic_dialog_info"
		/>
	</group>
	<group>
	</group>
</menu>

 (2)MainActivity.java

public class MainActivity extends Activity {
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}
	
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.options_menu, menu);
		
		MenuItem m1 = menu.findItem(R.id.item1);
		MenuItem m2 = menu.findItem(R.id.item2);
		// m1.setIntent(intent1);
		// m2.setIntent(intent2);
		
		return super.onCreateOptionsMenu(menu);
	}

	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.item1:
			// actionClickMenuItem1();
			break;
		case R.id.item2:
			// actionClickMenuItem2();
			break;
		}
		return super.onOptionsItemSelected(item);
	}

}
 

2. sub menus(暂时发现,这个menu没有办法添加icon)

public class MainActivity extends Activity {
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}
	
	public boolean onCreateOptionsMenu(Menu menu) {
		SubMenu m1 = menu.addSubMenu("SubM1");
		SubMenu m2 = menu.addSubMenu("SubM2");
		MenuItem m1_sub1 = m1.add("m1_1");
		MenuItem m1_sub2 = m1.add("m1_2");
		m2.add(0, 0, 0, "m2_2");
		m2.add(0, 1, 0, "m2_2");
		
		m1_sub1.setIcon(getResources().getDrawable(R.drawable.ic_dialog_alert)); // 不起任何作用
		m1_sub2.setIcon(R.drawable.ic_dialog_info); // 不起任何作用
		return super.onCreateOptionsMenu(menu);
	}

	public boolean onOptionsItemSelected(MenuItem item) {
		if (item.getItemId() == 0) {
		} else if (item.getItemId() == 1) {
		}
		return super.onOptionsItemSelected(item);
	}
}

 

3. context menu ( context menu需要在view上按上2s后显示 )

context menu是跟某个具体的view绑定在一起的。

Step 1:
>>调用"registerForContextMenu( view )", 去注册会弹出Context Menu的view.
Step 2:
>>实现"onCreateContextMenu( ContextMenu menu, View v, ContextMenuInfo menuInfo )"方法, 你可以根据View的值来判断是要激活哪个view的contex menu.
Step 3:
>> 实现"onContextItemSelected( MenuItem item )", 当选择了Context Menu中一个菜单项后, 系统会调用这个方式, 你可以透过ID来知道是哪一个menu item被选择了.

public class MainActivity extends Activity {
	private TextView tv;
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		tv = (TextView) findViewById(R.id.main_tv);
		registerForContextMenu(tv);
	}
	public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
		if (v == tv) {
			menu.add(0, 0, 0, "Context Menu One");
			menu.add(0, 1, 0, "Context Menu Two");
			
			//同sub menu一样,同样无法赋予icon
		}
	}
	public boolean onContextItemSelected(MenuItem item) {
		if (item.getItemId() == 0) {
			tv.setText("Click Context Menu One");
		} else if (item.getItemId() == 1) {
			tv.setText("Click Context Menu Two");
		}
		return super.onContextItemSelected(item);
	}
}
 

4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值