Android - Option Menu

Android - Option Menu 首页 / Android入门教程 / Android - Option Menu

Android Option Menus 是android的主要菜单。它们可用于设置(settings),搜索(search),删除(delete)项目等。

在这里,无涯教程将看到两个选项菜单示例。首先是简单的选项菜单,其次是带有图像的选项菜单。

无涯教程通过调用MenuInflater类的inflate()方法来使菜单膨胀。要对菜单项执行事件处理,您需要重写Activity类的onOptionsItemSelected()方法。

选项菜单示例

让无涯教程看看如何在android中创建菜单。让无涯教程看一下包含三个菜单项的简单选项菜单示例。

无涯教程在此文件中只有一个TextView。

File: activity_main.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<android.support.design.widget.coordinatorlayout
    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="example.learnfk.com.optionmenu.MainActivity">
    <android.support.design.widget.appbarlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay">
        <android.support.v7.widget.toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popuptheme="@style/AppTheme.PopupOverlay"></android.support.v7.widget.toolbar>
    </android.support.design.widget.appbarlayout>
    <include layout="@layout/content_main"></include>
</android.support.design.widget.coordinatorlayout>
File: context_main.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<android.support.constraint.constraintlayout
    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" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="example.learnfk.com.optionmenu.MainActivity" tools:showin="@layout/activity_main">
    <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintbottom_tobottomof="parent" app:layout_constraintleft_toleftof="parent" app:layout_constraintright_torightof="parent" app:layout_constrainttop_totopof="parent"></textview>
</android.support.constraint.constraintlayout>

它包含三个项目,如下所示。它是在res/menu目录中自动创建的。

无涯教程网

File: menu_main.xml
<menu
    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" tools:context="example.learnfk.com.optionmenu.MainActivity">
    <item android:id="@+id/item1" android:title="Item 1"></item>
    <item android:id="@+id/item2" android:title="Item 2"></item>
    <item android:id="@+id/item3" android:title="Item 3" app:showasaction="withText"></item>
</menu>

此类显示Menu.xml文件的内容,并在单击菜单项时执行事件处理。

File: MainActivity.java
package example.learnfk.com.optionmenu;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
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);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       //Inflate the menu; 如果存在,这会将项目添加到操作栏。
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
       int id = item.getItemId();
        switch (id){
            case R.id.item1:
                Toast.makeText(getApplicationContext(),"Item 1 Selected",Toast.LENGTH_LONG).show();
                return true;
            case R.id.item2:
                Toast.makeText(getApplicationContext(),"Item 2 Selected",Toast.LENGTH_LONG).show();
                return true;
            case R.id.item3:
                Toast.makeText(getApplicationContext(),"Item 3 Selected",Toast.LENGTH_LONG).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

输出无需单击菜单按钮。

android option menu example 1

单击菜单按钮后输出。

android option menu example 2

单击第二个菜单项后输出。

android option menu example 3

选项菜单与图标

您需要在res/drawable目录中具有图标图像。 android:icon元素用于在选项菜单上显示图标。您可以在strings.xml文件中写入字符串信息。但是无涯教程已经将它写在menu_main.xml文件中。

File: menu_main.xml
<menu
    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" tools:context="example.learnfk.com.optionmenu.MainActivity">
    <item android:id="@+id/item1" android:title="Item 1" app:showasaction="always" android:icon="@android:drawable/btn_star"></item>
    <item android:id="@+id/item2" android:title="Item 2" app:showasaction="ifRoom" android:icon="@android:drawable/btn_plus"></item>
    <item android:id="@+id/item3" android:title="Item 3" app:showasaction="withText" android:icon="@android:drawable/btn_plus"></item>
</menu>
android option menu example 4android option menu example 5

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Java核心技术面试精讲 -〔杨晓峰〕

软件工程之美 -〔宝玉〕

Elasticsearch核心技术与实战 -〔阮一鸣〕

全栈工程师修炼指南 -〔熊燚(四火)〕

性能工程高手课 -〔庄振运〕

安全攻防技能30讲 -〔何为舟〕

零基础GPT应用入门课 -〔林健(键盘)〕

结构思考力 · 透过结构看思考 -〔李忠秋〕

Rust 语言从入门到实战 -〔唐刚〕

好记忆不如烂笔头。留下您的足迹吧 :)