Android中菜单栏的使用(选项菜单)
2019-08-13 09:42
453 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43219615/article/details/99406652
1.简介
菜单是许多应用类型中常见的用户界面组件。要定义菜单,要在项目 res/menu/ 目录内创建一个 XML 文件(如果没有则创建),下面是一个例子,显示效果如图(“更多”也是菜单选项,只是设置了showAsAction属性放到了外面)。
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"> <!--item也可以嵌套 <menu> 元素,以便创建子菜单。--> <item android:id="@+id/menu_about_us" android:orderInCategory="1" android:title="关于我们" > <menu> <item android:title="不知道" android:orderInCategory="1" /> </menu> </item> <item android:title="联系我们" android:orderInCategory="2" android:id="@+id/menu_contact_us" /> <item android:id="@+id/menu_more" android:orderInCategory="3" android:title="更多" app:showAsAction="ifRoom" /> </menu>
创建选项菜单的步骤:重写 onCreateOptionsMenu(),提供菜单的xml文件。重写onOptionsItemSelected(),监听菜单选项的点击事件。下面是一个例子。
public boolean onCreateOptionsMenu(Menu menu) { this.getMenuInflater().inflate(R.menu.menu_demo, menu); return true; } public boolean onOptionsItemSelected(@NonNull MenuItem item) { int id = item.getItemId(); if(id == R.id.menu_about_us) { //do something } if (id == R.id.menu_contact_us) { //do something } if ((id==R.id.menu_more)) { //do something } return true; }
2. 例子
创建MenuDemoActivity。
- menu_demo.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"> <!--item也可以嵌套 <menu> 元素,以便创建子菜单。--> <item android:id="@+id/menu_about_us" android:orderInCategory="1" android:title="关于我们" > <menu> <item android:title="不知道" android:orderInCategory="1" /> </menu> </item> <item android:title="联系我们" android:orderInCategory="2" android:id="@+id/menu_contact_us" /> <item android:id="@+id/menu_more" android:orderInCategory="3" android:title="更多" app:showAsAction="ifRoom" /> </menu>
- activity_menu_demo.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MenuDemoActivity" android:orientation="vertical" android:padding="10dp"> </LinearLayout>
- MenuDemoActivity.java
package xyz.strasae.androidlearn.my; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; public class MenuDemoActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu_demo); } @Override /** * 打开页面时调用 指定菜单的xml文件 */ public boolean onCreateOptionsMenu(Menu menu) { this.getMenuInflater().inflate(R.menu.menu_demo, menu); return true; } @Override /** * 菜单项被选中时调用 */ public boolean onOptionsItemSelected(@NonNull MenuItem item) { int id = item.getItemId(); if(id == R.id.menu_about_us) { AlertDialog.Builder builder = new AlertDialog.Builder(MenuDemoActivity.this); builder.setTitle("关于我们"); builder.setMessage("XTUer"); builder.setPositiveButton("好的", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(MenuDemoActivity.this, "你点击了好的", Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(MenuDemoActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show(); } }); AlertDialog alertDialog = builder.create(); alertDialog.show(); } if (id == R.id.menu_contact_us) { AlertDialog.Builder builder = new AlertDialog.Builder(MenuDemoActivity.this); builder.setTitle("联系我们"); builder.setMessage("201705500216@smail.xtu.edu.cn"); builder.setPositiveButton("好的", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(MenuDemoActivity.this, "你点击了好的", Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(MenuDemoActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show(); } }); AlertDialog alertDialog = builder.create(); alertDialog.show(); } if ((id==R.id.menu_more)) { Uri uri = Uri.parse("https://blog.csdn.net/weixin_43219615"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); } return true; } }
相关文章推荐
- 【Android基础知识】选项菜单、上下文菜单、子菜单的使用
- Android ActionBar详解(二)--->使用ActionBar显示选项菜单
- 阅读《Android 从入门到精通》(28)——使用 XML 的选项菜单
- Android入门(44)——第六章 使用OptionsMenu实现选项菜单
- Android基础知识】选项菜单、上下文菜单、子菜单的使用
- Android中的选项菜单(OptionMenu)使用案例
- Android 选项菜单和子菜单的使用
- Android之UI学习篇九:使用TabHost实现卡片选项菜单
- Android高手进阶教程(六)之----Android 中MenuInflater的使用(布局定义菜单)!
- android中列表选项、单选选项、多选选项对话框的使用
- Android中使用菜单
- android菜单详解二:选项菜单
- Android高手进阶教程(六)之----Android 中MenuInflater的使用(布局定义菜单)!
- Android菜单详解(二)——创建并响应选项菜单
- Android高手进阶教程(六)之 ----Android 中MenuInflater的使用(布局定义菜单)
- Android菜单详解(二)——创建并响应选项菜单
- Android 菜单选项动态变化
- android菜单详解二:选项菜单
- 在建立项目的时候在new菜单栏里没有android的选项,只有在project里面才有
- Android UI开发第二十八篇——Fragment中使用左右滑动菜单