Android推荐的三种基本菜单

您所在的位置:网站首页 android实现菜单实例 Android推荐的三种基本菜单

Android推荐的三种基本菜单

2023-09-15 18:51| 来源: 网络整理| 查看: 265

概述

Google在开发者网站上关于Menu的API指南中为开发者推荐了三种基本的菜单:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出菜单(PopupMenu)。下面分别给出相应的基本实现步骤。

选项菜单(OptionsMenu) 效果图

实现步骤: 1、在res下面创建一个menu文件夹,并新建一个xml文件作为OptionMenu的布局文件。 2、在要显示OptionMenu的Activity里面重写onCreateOptionsMenu和onOptionsItemSelected方法。 //创建菜单,加载我们之前定义的menu_main.xml布局文件 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main,menu); return true; } //当OptionsMenu被选中的时候处理具体的响应事件 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.action_1: Toast.makeText(mContext,"Option 1",Toast.LENGTH_SHORT).show(); return true; case R.id.action_2: Toast.makeText(mContext,"Option 2",Toast.LENGTH_SHORT).show(); return true; case R.id.action_3: Toast.makeText(mContext,"Option 3",Toast.LENGTH_SHORT).show(); return true; default: //do nothing } return super.onOptionsItemSelected(item); } 上下文菜单(ContextMenu) 效果图

实现步骤 1、在res下面创建一个menu文件夹,并新建一个xml文件作为ContextMenu的布局文件(这里我们复用上面OptionsMenu的布局文件)。 2、在要显示ContextMenu的Activity里面重写onCreateContextMenu和onContextItemSelected方法。 //创建ContextMenu,加载我们之前定义的menu_main.xml布局文件 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.menu_main, menu); } //当ContextMenu被选中的时候处理具体的响应事件 @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.action_1: Toast.makeText(mContext,"Option 1",Toast.LENGTH_SHORT).show(); return true; case R.id.action_2: Toast.makeText(mContext,"Option 2",Toast.LENGTH_SHORT).show(); return true; case R.id.action_3: Toast.makeText(mContext,"Option 3",Toast.LENGTH_SHORT).show(); return true; default: //do nothing } return super.onContextItemSelected(item); } 3、为控件添加长按响应属性,并绑定这个控件。

为TextView控件添加android:longClickable属性来响应用户长按点击事件。

将View与ContextMenu绑定。

private TextView mContextMenu; mContextMenu = findViewById(R.id.tv_context_menu); registerForContextMenu(mContextMenu); 弹出菜单(PopupMenu) 效果图

实现流程 1、在res下面创建一个menu文件夹,并新建一个xml文件作为PopupMenu的布局文件(这里我们复用上面OptionsMenu的布局文件)。 2、把PopupMenu相关逻辑封装到showPopupMenu()方法中,包含PopupMenu的实例化、布局设置、显示、添加MenuItem的点击监听及响应等。 private void showPopupMenu(){ PopupMenu popupMenu = new PopupMenu(this,mPopupMenu); popupMenu.inflate(R.menu.menu_main); popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { switch (menuItem.getItemId()){ case R.id.action_1: Toast.makeText(mContext,"Option 1",Toast.LENGTH_SHORT).show(); return true; case R.id.action_2: Toast.makeText(mContext,"Option 2",Toast.LENGTH_SHORT).show(); return true; case R.id.action_3: Toast.makeText(mContext,"Option 3",Toast.LENGTH_SHORT).show(); return true; default: //do nothing } return false; } }); popupMenu.show(); } 3、与View绑定,当点击这个View的时候显示PopupMenu。

View在xml中的布局。

绑定View,点击显示。

private TextView mPopupMenu; mPopupMenu = findViewById(R.id.tv_popup_menu); mPopupMenu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showPopupMenu(); } }); 小结

通过比较发现,前两种方法实现起来是比较简单的,Activity中已经为我们提供了创建和响应的回调方法,我们只需要在创建菜单时把布局文件传递进去,然后在响应方法中实现对应项要做的事就可以了。不像第三种方法需要额外自己去创建实例并实现MenuItem的点击监听。在默认显示的位置上,OptionsMenu显示在右上角ActionBar的位置,ContextMenu能显示在控件视图范围内任何被点击的位置,PopupMenu与被点击控件左下角对齐显示。从三种菜单的实现效果图可以看出,默认的菜单显示样式是一样的。 菜单的实现方式不止这三种,更多的方法可以参看Android中的菜单实现汇总,开发者可以根据自己项目的需要选择适合自己的方法实现菜单。

Demo



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3