Menu菜单
方法较多,需要记忆
系统菜单
效果:
注意:这并不是某些软件的+号,不能与之混淆
一个Activity只有一个系统菜单
代码:
<item android:id="@+id/blue" android:title="蓝色" app:showAsAction="never"></item>
<item android:id="@+id/red" android:title="红色"></item>
在res下创建menu文件夹并新建xml文件
每个item都要加入id
showAsAction------菜单项在按钮上的显示方式
alaways:菜单项一直显示在ActionBar上
ifRoom:如果有足够的空间,菜单会显示在ActionBar上
never:菜单永远不会出现在ActionBar上
.withText:菜单图标,菜单文本一起显示
(个人借用,如有侵权,请速告,立删)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id=item.getItemId();
switch (id){
case R.id.blue:
Toast.makeText(MainActivity.this,"蓝色",Toast.LENGTH_SHORT).show();
break;
case R.id.red:
Toast.makeText(MainActivity.this,"红色",Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
onCreateOptionsMenu----在activity中重写,加载xml文件
直接调用getMenuInflater().inflate(R.menu.menu,menu) 方法 参数为: xml文件和menu
onOptionsItemSelected----在activity中重写,设置事件监听
上下文菜单
效果:
触发需要长按
代码:
registerForContextMenu(text);//绑定相应的控件,在oncreate中
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.menu,menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
int id=item.getItemId();
switch (id){
case R.id.blue:
Toast.makeText(MainActivity.this,"蓝色",Toast.LENGTH_SHORT).show();
break;
case R.id.red:
Toast.makeText(MainActivity.this,"红色",Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
onCreateContextMenu----在activity中重写,加载xml文件
onContextItemSelected----在activity中重写,设置事件监听
弹出菜单
效果:
默认弹出的位置在控件view的下方
代码:
PopupMenu popupMenu=new PopupMenu(MainActivity.this,text);
popupMenu.inflate(R.menu.menu);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int id=item.getItemId();
switch (id){
case R.id.blue:
Toast.makeText(MainActivity.this,"蓝色",Toast.LENGTH_SHORT).show();
break;
case R.id.red:
Toast.makeText(MainActivity.this,"红色",Toast.LENGTH_SHORT).show();
break;
}
return false;
}
});
popupMenu.show();
在点击监听中写入
实例化PopupMenu 生成对象
构造函数参数: 上下文, 指定的控件
inflate-----设置布局
setOnMenuItemClickListener-----设置监听
最后要调用该对象的show 方法
内容不多,但是却是较为实用的基础,虽然现在流行的app不使用…但是第三天的课程却与此类似,需用心学习第三日课程