Menu菜单和PopupWindow窗口
- 一.系统菜单OptionsMenu
- 步骤流程
- 1.创建menu文件夹
- 2.创建menu文件夹下.xml文件
- 3.Activity重写onCreateOptionsMenu加载资源文件
- 4.Activity重写onOptionsItemSelected加设置事件监听
- 注意:一个Activity只有一个系统菜单
- 二.上下文菜单ContextMenu
- 步骤流程:
- 1.在res下面创建一个menu文件夹,并新建一个xml文件作为ContextMenu的布局文件,我们复用上面的menu布局
- 2.Activity重写onCreateConextMenu加载资源文件
- 3.Activity重写onConextItemSelected设置事件监听
- 三.弹出菜单
- 1.实现流程:
- 步骤1:在res下面创建一个menu文件夹,并新建一个xml文件作为PoupMenu的布局文件。
- 步骤2:把PopupMenu相关逻辑封装到showPopupMenu()方法中,包含PopupMenu的实例化、布局设置、显示、添加MenuItem的点击监听及响应等
- 步骤3:为控件设置事件监听直接调用showPopupMenu()方法
一.系统菜单OptionsMenu
步骤流程
1.创建menu文件夹
2.创建menu文件夹下.xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/red" android:title="红色"/>
<item android:id="@+id/blue" android:title="蓝色"/>
<item android:id="@+id/yello" android:title="黄色"/>
</menu>
3.Activity重写onCreateOptionsMenu加载资源文件
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu,menu);
return super.onCreateOptionsMenu(menu);
}
4.Activity重写onOptionsItemSelected加设置事件监听
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id){
case R.id.red:
Toast.makeText(this, "红色", Toast.LENGTH_SHORT).show();
break;
case R.id.blue:
Toast.makeText(this, "蓝色", Toast.LENGTH_SHORT).show();
break;
case R.id.yello:
Toast.makeText(this, "黄色", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
注意:一个Activity只有一个系统菜单
二.上下文菜单ContextMenu
步骤流程:
1.在res下面创建一个menu文件夹,并新建一个xml文件作为ContextMenu的布局文件,我们复用上面的menu布局
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/red" android:title="红色"/>
<item android:id="@+id/blue" android:title="蓝色"/>
<item android:id="@+id/yello" android:title="黄色"/>
</menu>
2.Activity重写onCreateConextMenu加载资源文件
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.menu,menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
3.Activity重写onConextItemSelected设置事件监听
@Override
public boolean onContextItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id){
case R.id.red:
Toast.makeText(this, "红色", Toast.LENGTH_SHORT).show();
break;
case R.id.blue:
Toast.makeText(this, "蓝色", Toast.LENGTH_SHORT).show();
break;
case R.id.yello:
Toast.makeText(this, "黄色", Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
三.弹出菜单
1.实现流程:
步骤1:在res下面创建一个menu文件夹,并新建一个xml文件作为PoupMenu的布局文件。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/red" android:title="红色"/>
<item android:id="@+id/blue" android:title="蓝色"/>
<item android:id="@+id/yello" android:title="黄色"/>
</menu>
步骤2:把PopupMenu相关逻辑封装到showPopupMenu()方法中,包含PopupMenu的实例化、布局设置、显示、添加MenuItem的点击监听及响应等
public void popupMenu(){
PopupMenu popupMenu = new PopupMenu(MainActivity.this, tv);
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.red:
Toast.makeText(MainActivity.this, "红色", Toast.LENGTH_SHORT).show();
break;
case R.id.blue:
Toast.makeText(MainActivity.this, "蓝色", Toast.LENGTH_SHORT).show();
break;
case R.id.yello:
Toast.makeText(MainActivity.this, "黄色", Toast.LENGTH_SHORT).show();
break;
}
return false;
}
});
popupMenu.show();
}
步骤3:为控件设置事件监听直接调用showPopupMenu()方法
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupMenu();
}
});