Android Menu菜单栏

Android推荐使用XML格式定义菜单项,以实现菜单结构的可视化、代码与内容分离,并支持根据不同平台版本和配置创建替代菜单。菜单资源定义在XML文件中,根节点为<menu>,包含<item>和<group>元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值