您的位置:首页 > 移动开发 > Android开发

android 的Menu菜单

2016-01-19 15:19 447 查看
menu分为optionMenu和ContextOptionMenu和PopupMenu

optionMenu

静态的创建option

使用onCreteOptionsMenu方法获取要显示的optionMenu菜单。使用getMenuInflater的inflater方法把R.menu.main填充在menu中
代码如下
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


使用onOptionItemSelected设置点击事件
代码如下
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_exit:
Toast.makeText(this, "点击了退出", Toast.LENGTH_SHORT).show();
break;

case R.id.menu_red:
Toast.makeText(this, "点击了红色", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_green:
Toast.makeText(this, "点击了绿色", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_blue:
Toast.makeText(this, "点击了蓝色", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.phone.menu.MainActivity" >

<item
android:id="@+id/menu_exit"
android:orderInCategory="100"
android:showAsAction="never"
android:title="退出"/>
<item
android:id="@+id/menu_font_color"
android:title="字体颜色设置">
<menu>
<group>
<item
android:id="@+id/menu_red"
android:title="红色">
</item>
<item
android:id="@+id/menu_green"
android:title="绿色">
</item>
<item
android:id="@+id/menu_blue"
android:title="蓝色">
</item>
</group>
</menu>
</item>

</menu>

动态创建OptionsMenu

在onCreateOptionsMenu方法中直接使用add添加
private static final int ITEMID0 = 0;
private static final int ITEMID1 = 1;
private static final int ITEMID2 = 2;
private static final int ITEMID3 = 3;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//getMenuInflater().inflate(R.menu.main, menu);
menu.add(Menu.NONE, ITEMID0, Menu.NONE, "item1");
menu.add(Menu.NONE, ITEMID1, Menu.NONE, "item2");
menu.add(Menu.NONE, ITEMID2, Menu.NONE, "item3");
menu.add(Menu.NONE, ITEMID3, Menu.NONE, "item4");
return true;
}


在onOptionsItemSelected设置点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITEMID0:
Toast.makeText(this, "点击了item1", Toast.LENGTH_SHORT).show();
break;

case ITEMID1:
Toast.makeText(this, "点击了item2", Toast.LENGTH_SHORT).show();
break;
case ITEMID2:
Toast.makeText(this, "点击了item3", Toast.LENGTH_SHORT).show();
break;
case ITEMID3:
Toast.makeText(this, "点击了item4", Toast.LENGTH_SHORT).show();
break;
}
return true;
}

ContextMenu

静态的添加
在onCreateContextMenu方法中使用填充器吧menu填充在menu中
代码
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {

getMenuInflater().inflate(R.menu.main, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}


监听事件
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.collect:
Toast.makeText(this, "收藏", Toast.LENGTH_SHORT).show();
break;

case R.id.unfavorite:
Toast.makeText(this, "取消收藏", Toast.LENGTH_SHORT).show();
break;
case R.id.color_red:
Toast.makeText(this, "红色", Toast.LENGTH_SHORT).show();
break;
case R.id.color_green:
Toast.makeText(this, "绿色", Toast.LENGTH_SHORT).show();
break;
case R.id.color_blue:
Toast.makeText(this, "蓝色", Toast.LENGTH_SHORT).show();
break;
}

return true;
}
注册,使用contextMenu必须注册,把contextMenu注册在那一view控件中,长按那个控件就会出现ContextMenu菜单
/**设置listview的适配器,*/
private void initViews() {
String[] names=getResources().getStringArray(R.array.name);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, names);
setListAdapter(adapter);
registerForContextMenu(getListView());//注册contextMenu
}


动态的添加

在onCreateContextMenu中使用add方法添加
代码
private static final int ITEMID0 = 0;
private static final int ITEMID1 = 1;


@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {

menu.add(Menu.NONE, ITEMID0, Menu.NONE,"收藏" );
menu.add(Menu.NONE, ITEMID1, Menu.NONE,"取消收藏" );
super.onCreateContextMenu(menu, v, menuInfo);
}
在onContextItemSelected中设置监听
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITEMID0:
Toast.makeText(this, "收藏", Toast.LENGTH_SHORT).show();
break;

case ITEMID1:
Toast.makeText(this, "取消收藏", Toast.LENGTH_SHORT).show();
break;
}

return true;
}
注册:与静态的注册一样
/**设置listview的适配器,*/
private void initViews() {
String[] names=getResources().getStringArray(R.array.name);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, names);
setListAdapter(adapter);
registerForContextMenu(getListView());//注册contextMenu
}
PopupMenu

静态的添加
使用步骤:
1.创建一个popupMenu对象;
2.调用对象的getMenuInflater把R.menu.main填充在menu中
3.设置监听
4.调用show方法显示
代码

public void click(View view){
PopupMenu pm=new PopupMenu(this, view);
pm.getMenuInflater().inflate(R.menu.main, pm.getMenu());
pm.setOnMenuItemClickListener(new OnMenuItemClickListener() {

@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.collect:
Toast.makeText(MainActivity.this, "收藏", Toast.LENGTH_SHORT).show();
break;

case R.id.unfavorite:
Toast.makeText(MainActivity.this, "取消收藏", Toast.LENGTH_SHORT).show();
break;
case R.id.color_red:
Toast.makeText(MainActivity.this, "红色", Toast.LENGTH_SHORT).show();
break;
case R.id.color_green:
Toast.makeText(MainActivity.this, "绿色", Toast.LENGTH_SHORT).show();
break;
case R.id.color_blue:
Toast.makeText(MainActivity.this, "蓝色", Toast.LENGTH_SHORT).show();
break;

}

return true;
}
});
pm.show();
}
动态添加
代码如下
private static final int ITEMID0 = 0;
private static final int ITEMID1 = 1;
private static final int GROUPID = 2;
private static final int ITEMID2 = 3;
private static final int ITEMID3 = 4;
private static final int ITEMID4 = 5;


PopupMenu pm=new PopupMenu(this, view);
Menu menu = pm.getMenu();
menu.add(Menu.NONE, ITEMID0, Menu.NONE, "收藏");
menu.add(Menu.NONE, ITEMID1, Menu.NONE, "取消收藏");
SubMenu subMenu = menu.addSubMenu("字体颜色");
subMenu.add(GROUPID, ITEMID2, Menu.NONE, "红色");
subMenu.add(GROUPID, ITEMID3, Menu.NONE, "绿色");
subMenu.add(GROUPID, ITEMID4, Menu.NONE, "蓝色");
pm.setOnMenuItemClickListener(new OnMenuItemClickListener() {

@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case ITEMID0:
Toast.makeText(MainActivity.this, "收藏", Toast.LENGTH_SHORT).show();
break;

case ITEMID1:
Toast.makeText(MainActivity.this, "取消收藏", Toast.LENGTH_SHORT).show();
break;
case ITEMID2:
Toast.makeText(MainActivity.this, "红色", Toast.LENGTH_SHORT).show();
break;
case ITEMID3:
Toast.makeText(MainActivity.this, "绿色", Toast.LENGTH_SHORT).show();
break;
case ITEMID4:
Toast.makeText(MainActivity.this, "蓝色", Toast.LENGTH_SHORT).show();
break;

}

return true;
}
});
pm.show();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: