Android 的菜单
来源:互联网 发布:java xml生成pdf 编辑:程序博客网 时间:2024/05/17 03:57
三种菜单:选项菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu)
1. 选项菜单
选项菜单是绑定到Activity上的,onCreateOptionsMenu(Menumenu)创建菜单时调用,只在我们第一次打开菜单时调用,通关过menu的add方法添加MenuItem(项),通过menu的Icon设置项的图片。菜单展示在Activity界面的右上角,当点击每项时触发onOptionsMenuSelected()
(1) 在menu中添加展示的项
(2) 重写onCreateOptionsMenu方法,加载menu项
(3) 重写onOptionsItemSelected,设置点击执行的方法
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.zicaidan.MainActivity">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
</menu>
@Override
publicboolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
publicboolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
} }
2. 上下文菜单
是绑定到控件上的,每次控件的长按2s就会触发。每次点击设置了监听或注册了的视图,都会重新创建菜单项.
//菜单的使用1.直接对控件设置监听,并在activity中重写ContextItemSelected
//2.先对试图进行注册,然后重写onCreateContextMenu()添加上下菜单的头和选项,在重写onContextItemSelected添加处理事件
public classMainActivity extends Activity {
private ListView my_listview;
private List<String> list;
private Button button1;
private Button button2;
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
my_listview = (ListView)findViewById(R.id.my_listview);
button1 = (Button)findViewById(R.id.button1);
button2 = (Button)findViewById(R.id.button2);
// 先对试图进行注册
registerForContextMenu(button2);
// 展示的是系统默认的布局
button1.setOnCreateContextMenuListener(newView.OnCreateContextMenuListener() {
@Override
public voidonCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfomenuInfo) {
menu.setHeaderIcon(R.drawable.ic_launcher);
menu.setHeaderTitle("上下文菜单");
//menu.setHeaderView(view);//设置自己的标题view
//menu.clearHeader();//清除菜单头
menu.add(0, 1, 0,"添加");
menu.add(0, 2, 0,"删除");
}
});
getData();
// 展示的是系统默认的布局
my_listview
.setOnCreateContextMenuListener(newView.OnCreateContextMenuListener() {
@Override
publicvoid onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfomenuInfo) {
menu.add(0,1, 0, "添加");
menu.add(0,2, 0, "删除");
}
});
}
// 用于button2的上下文菜单添加
@Override
public void onCreateContextMenu(ContextMenumenu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v,menuInfo);
switch (v.getId()) {
case R.id.button2:
menu.add(0, 1, 0, "添加");
menu.add(0, 2, 0, "删除");
break;
default:
break;
}
}
// 使用的是一个时间处理器
@Override
public boolean onContextItemSelected(MenuItemitem) {
String id = item.getItemId() +"";
switch (item.getItemId()) {
case 1:
Toast.makeText(MainActivity.this,"添加", Toast.LENGTH_LONG).show();
break;
case 2:
Toast.makeText(MainActivity.this,"删除", Toast.LENGTH_LONG).show();
break;
}
return true;
}
private void getData() {
list = new ArrayList<String>();
for (int i = 0; i < 20; i++) {
list.add("第" + i +"条数据");
}
MyAdapter adapter = new MyAdapter();
my_listview.setAdapter(adapter);
}
private class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generatedmethod stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generatedmethod stub
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position,View convertView, ViewGroup parent) {
TextView text = newTextView(MainActivity.this);
text.setHeight(40);
text.setGravity(Gravity.CENTER);
text.setTextSize(20);
text.setText(list.get(position));
return text;
}
}
}
3. 子菜单
子菜单的样式可以通过设置主题进行修改
@Override
publicboolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 1, 0, "第一項");
menu.add(0,2, 0, "第二項");
menu.add(0,3, 0, "第三項");
SubMenumen = menu.addSubMenu("测试");//
menu.add(0,1, 0, "第一項");
menu.add(0,2, 0, "第二項");
menu.add(0,3, 0, "第三項");
menu.add(0,4, 0, "第四項");
menu.add(0,5, 0, "第五項");
menu.add(0,6, 0, "第六項");
returntrue;
}
@Override
publicboolean onOptionsItemSelected(MenuItem item) {
//Handle action bar item clicks here. The action bar will
//automatically handle clicks on the Home/Up button, so long
//as you specify a parent activity in AndroidManifest.xml.
switch(item.getItemId()) {
case1:
break;
case2:
break;
case3:
break;
case4:
break;
case5:
break;
case6:
break;
default:
break;
}
returnsuper.onOptionsItemSelected(item);
}
- android菜单的实现
- Android菜单的使用
- Android的菜单
- Android的菜单
- 理解Android的菜单
- Android的底部菜单
- android菜单的使用
- Android菜单的使用
- Android的菜单资源
- android 的Menu菜单
- android的选项菜单
- Android----菜单的使用
- Android 的菜单
- android 菜单的创建
- Android菜单的使用
- android 菜单子菜单 的用法
- android菜单详解:菜单的一些特性
- 【Android】菜单功能的实现:上下文菜单
- Redis连接 db,dbIndex参数-- Redis配置多个数据库
- Windows下编译、移植、使用ffmpeg(序)
- Qt: 学生信息管理里系统,QTreewidget、QTableView实现
- Android Dialog 去除背景内容模糊
- 指纹解锁
- Android 的菜单
- 结构体对齐问题
- 前台ajax请求后台实现下载
- java String字符串空格隔开
- JQuery笔记二 :动画效果【蓝鸥HTML5出品】
- linux ssh服务是否已经启动?
- 云服务总线CSB
- Spring的AOP基于xml常用的几种配置
- 对象作用域与Servlet事件监听器