android菜单的使用
程序员文章站
2022-05-26 20:41:56
...
Android里面也可用XML定义菜单资源,菜单分两种,一种是OptionMenu(点系统"Menu"键出来),另一种是ContextMenu必须长按才能出来;
optionMenu菜单的使用
1,创建选项菜单; onCreateOptionsMenu(Menu menu)
//创建选项菜单的方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//menu.add(groupId, itemId, order, title)
//goupid 菜单项所在组的标示符
//itemid 唯一表示的ID
//order 菜单栏项的显示顺序
//title 菜单项相似的文本
MenuItem menu1 = menu.add(0, 0, 0, "item1");
menu1.setAlphabeticShortcut('a');//分配快捷键的方法
menu1.setIcon(R.drawable.ic_launcher); //设置图标
MenuItem menu2 = menu.add(0, 1, 1, "item2");
menu1.setAlphabeticShortcut('b');//分配快捷键的方法
menu1.setIcon(R.drawable.ic_launcher); //设置图标
MenuItem menu3 = menu.add(0, 2, 2, "item3");
menu1.setAlphabeticShortcut('c');//分配快捷键的方法
menu1.setIcon(R.drawable.ic_launcher); //设置图标
//使用简单方式创建三个菜单栏
menu.add(0,4,4,"item4");
menu.add(0,5,5,"item5");
menu.add(0,6,6,"item6");
return true;
}
2,添加选项菜单的监听器onOptionsItemSelected(MenuItem item);
@Override//选项菜单的监听器
public boolean onOptionsItemSelected(MenuItem item) {
//MenuChoice方法接收Menuite方法的一个参数,并检查其ID确定被选中的菜单项
int id = item.getItemId();
switch (id) {
case 0:
Toast.makeText(this, "选中item1", 1000).show();
break;
case 1:
Toast.makeText(this, "选中item2", 1000).show();
break;
case 2:
Toast.makeText(this, "选中item3", 1000).show();
break;
case 4:
Toast.makeText(this, "选中item4", 1000).show();
break;
case 5:
Toast.makeText(this, "选中item5", 1000).show();
break;
case 6:
Toast.makeText(this, "选中item6", 1000).show();
break;
}
return false;
}
ContextMenu菜单的使用;
上下文菜单的使用必须是长按才会出来
1,定义布局上下文菜单的布局文件menu_contextemnu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/rename"
android:title="修改名字"
/>
<item
android:id="@+id/dele"
android:title="删除"
/>
<item
android:id="@+id/open"
android:title="打开"
/>
<item
android:id="@+id/detailed"
android:title="详细"
/>
</menu>
2,定义主配置文件 acticity_main.xml
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onclick"
android:text="上下文菜单"
/>
3,java类的使用
//上下文菜单的使用
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
//获得按钮
Button btn=(Button)this.findViewById(R.id.btn);
btn.setOnCreateContextMenuListener(this);
//上下文菜单的使用必须要先注册组件
this.registerForContextMenu(btn);
}
public void onclick(View v){
}
@Override//创建上下文菜单
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.layout.menu_contextemnu, menu);
}
@Override//创建上下文监听器
public boolean onContextItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.rename:
Toast.makeText(this, "重命名", 1000).show();
break;
case R.id.dele:
Toast.makeText(this, "删除", 1000).show();
break;
case R.id.detailed:
Toast.makeText(this, "详细", 1000).show();
break;
case R.id.open:
Toast.makeText(this, "打开", 1000).show();
break;
}
return false;
}
}
3, 选项菜单和上下文菜单监听器;
onMenuItemSelected可以同时使用在有少量的选项菜单和上下文的情况,下面一个方法就搞定, 如果出现上下文监听器(onContextItemSelected),选项监听器(onOptionsItemSelected) ,onMenuItemSelected 则只会执行onMenuItemSelected 监听器
@Override
// 菜单被选中的时候会执行
public boolean onMenuItemSelected(int featureId, MenuItem item) {
// TODO Auto-generated method stub
return true;
}
上一篇: 古代的划拳辞令是怎么来的?从一到九分别有什么含义?
下一篇: 数据结构——二叉树的遍历