Android
Android入门之两种方法实现选项菜单和上下文菜单并给出Toast土司提示----使用布局文件实现
文章目录
一、使用布局文件(XML)实现
1、布局文件实现选项菜单
新建一个文件夹叫menu,存放选项菜单的布局文件
(1)实现效果
(2)实现步骤
添加菜单项(7个菜单项添加方法类似,只是id不同)
<item
android:id="@+id/tianjia"
android:title="添加"
app:showAsAction="withText" />
<item
android:id="@+id/baocun"
android:title="保存"
app:showAsAction="withText" />
<item
android:id="@+id/fasong"
android:title="发送"
app:showAsAction="withText" />
<item
android:id="@+id/xiangxi"
android:title="详细"
app:showAsAction="withText" />
<item
android:id="@+id/shanchu"
android:title="删除"
app:showAsAction="withText" />
<item
android:id="@+id/bangzhu"
android:title="帮助"
app:showAsAction="withText" />
<item
android:id="@+id/guanyu"
android:title="关于"
app:showAsAction="withText" />
创建选项菜单的方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//加载布局
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.my_menu, menu);
return super.onCreateOptionsMenu(menu);
}
为选项菜单添加点击事件
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
// 获取ID
int itemId = item.getItemId();
// 给获取到的ID提示
switch (itemId) {
case R.id.tianjia:
case R.id.baocun:
case R.id.fasong:
case R.id.xiangxi:
case R.id.shanchu:
case R.id.bangzhu:
case R.id.guanyu:
Toast.makeText(MainActivity.this, "点击了"+item.getTitle(), Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
如果想给菜单项添加图标,要创建新的Vector Asset类型的XML文件
给每个菜单项添加图标后,在XML文件中使用图标
<item
android:id="@+id/tianjia"
android:icon="@drawable/tianjia"
android:title="添加"
app:showAsAction="withText" />
显示选项菜单按钮的图标,只适用于选项菜单,不适用于上下文菜单
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if (menu != null) {
if (menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")){
try {
Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
method.setAccessible(true);
method.invoke(menu, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return super.onMenuOpened(featureId, menu);
}
2、布局文件实现上下文菜单
(1)实现效果
(1)实现步骤
布局文件中添加文本视图
<TextView
android:id="@+id/textview_content"
android:layout_width="match_parent"
android:layout_height="120dp"
android:text="长按此处弹出上下文菜单"
android:textSize="30sp"
android:textColor="@color/white"
android:background="@color/purple_200"
android:gravity="center"/>
创建上下文菜单的方法
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
//加载布局
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.my_menu, menu);
}
为上下文菜单添加点击事件
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
int itemId = item.getItemId();
switch (itemId) {
case R.id.tianjia:
case R.id.baocun:
case R.id.fasong:
case R.id.xiangxi:
case R.id.shanchu:
case R.id.bangzhu:
case R.id.guanyu:
Toast.makeText(MainActivity.this, "点击了" + item.getTitle(), Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onContextItemSelected(item);
}
显示上下文菜单按钮的图标,只适用于上下文菜单,不适用于选项菜单
private void setIconEnable(Menu menu,boolean enable)
{
try {
@SuppressLint("PrivateApi") Class<?>clazz=Class.forName("com.android.internal.view.menu.MenuBuilder");
@SuppressLint("DiscouragedPrivateApi") Method method=clazz.getDeclaredMethod("setOptionalIconsVisible",boolean.class);
method.setAccessible(true);
method.invoke(menu,enable);
}catch (Exception e)
{
e.printStackTrace();
}
}
总结
Android入门之两种方法实现选项菜单和上下文菜单的创建(一)
以上就是今天要讲的内容,本文仅仅简单介绍了Android应用中两种方法实现选项菜单和上下文菜单的创建的布局文件方法,下面Android入门之两种方法实现选项菜单和上下文菜单的创建(二)中将会讲解利用Java代码实现两个菜单创建的方法。