Android Menu菜单栏

来源:互联网 发布:工厂模式 java 编辑:程序博客网 时间:2024/05/21 16:55
Android Menu菜单栏
效果图

Android Menu菜单栏
菜单:
菜单是许多类型的应用程序中的通用用户界面组件。要提供熟悉且一致的用户体验,您应该使用MenuAPI在活动中呈现用户操作和其他选项。
在XML中定义菜单

对于所有菜单类型,Android提供了标准的XML格式来定义菜单项。不要在活动代码中构建菜单,您应该在XML菜单资源中定义一个菜单及其所有项目。然后,您可以Menu在活动或片段中扩充菜单资源(将其作为对象加载)。

使用菜单资源的优点:

1.在XML中更容易地可视化菜单结构。

2.它将菜单的内容与应用程序的行为代码分离。

3.它允许您通过利用应用程序资源框架,为不同的平台版本,屏幕大小和其他配置创建替代菜单配置。

定义菜单,请在项目目录中创建一个XML文件,res/menu/ 并使用以下元素构建菜单:

<menu>

定义Menu它是菜单项的容器。一个<menu>元件必须是该文件中的根节点,可容纳一个或多个<item>和<group>元素。

<item>
创建MenuItem表示菜单中的单个项目。此元素可能包含嵌套<menu>元素,以便创建子菜单。
<group>
<group>元素的可选的,不可见的容器。它允许您对菜单项进行分类,以便它们共享属性,如活动状态和可见性。
<item>元素支持多个属性可以用来定义项的外观和行为,下面是常用属性:
android:id
项目唯一的资源ID,允许应用程序在用户选择项目时识别该项目。
android:icon:对drawable用作项目图标的引用。
android:title:对用作项目标题的字符串的引用。
android:showAsAction:指定此项目在应用栏中作为操作项显示的时间和方式。

处理点击事件

当用户从选项菜单中选择一个项目(包括应用程序栏中的操作项目)时,系统调用您的活动的onOptionsItemSelected()方法。此方法传递MenuItem所选。您可以通过调用来标识项目getItemId(),这将返回菜单项的唯一ID(由android:id菜单资源中的属性定义或使用为add()方法指定的整数)。您可以将此ID与已知菜单项相匹配,以执行相应的操作。

代码演示
1.在res下新建一个名为menu的包,在包中新建一个menu_main的布局文件
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:app="http://schemas.android.com/apk/res-auto">    <item        android:id="@+id/action_list"        android:orderInCategory="100"        android:title="list显示"        app:showAsAction="never">        <menu>            <item                android:id="@+id/action_list_noraml"                android:orderInCategory="100"                android:title="标准"                app:showAsAction="never"/>            <item                android:id="@+id/action_list_vertical_reverse"                android:orderInCategory="100"                android:title="垂直反向"                app:showAsAction="never"/>            <item                android:id="@+id/action_list_horizontal"                android:orderInCategory="100"                android:title="水平"                app:showAsAction="never"/>            <item                android:id="@+id/action_list_horizontal_reverse"                android:orderInCategory="100"                android:title="水平反向"                app:showAsAction="never"/>        </menu>    </item></menu>
2.编写主类
package com.example.admin.recycleview;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.Menu;import android.view.MenuItem;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    //加载菜单布局    @Override    public boolean onCreateOptionsMenu(Menu menu) {        //加载布局使用菜单特有方法,getMenuInflate对象        //参数1.菜单显示的布局 2.固定Menu        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }    //菜单按钮点击事件处理    @Override    public boolean onOptionsItemSelected(MenuItem item) {        int itemId = item.getItemId();        if (itemId == R.id.action_list_noraml) {            //标准显示            Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();            return true;        }        return super.onOptionsItemSelected(item);    }}
2 0
原创粉丝点击