文档章节

【Android笔记】选项菜单

大道无名
 大道无名
发布于 2016/09/30 22:51
字数 424
阅读 22
收藏 0

使用选项菜单OptionMenu

1.创建选项菜单

重写onCreateOptionsMenu():

2.设置菜单项

  1. 通过xml设置:Menunflater.inflate();
  2. 代码动态设置:menu.add();

3.设置菜单项监听

重写onOptionsItemSelected();

实例一:通过xml设置菜单

1.在资源目录res下创建menu资源文件夹

2.在menu文件夹下创建menu.xml文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/action_item1"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="菜单一"/>

    <item
        android:id="@+id/action_item2"
        android:orderInCategory="101"
        android:showAsAction="never"
        android:title="菜单二"/>

    <item
        android:id="@+id/action_item3"
        android:orderInCategory="102"
        android:showAsAction="never"
        android:title="菜单三"/>

</menu>

3.重写onCreateOptionsMenu()与onOptionsItemSelected()方法

package com.example.demo15;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
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);
    }

    /**
     * 添加菜单
     * @param menu
     * @return
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu, menu);

        return true;
    }

    /**
     * 菜单事件监听
     * @param item
     * @return
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.action_item1:
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                item.setIntent(intent);
                break;
            case R.id.action_item2:
                Toast.makeText(MainActivity.this, "菜单二", Toast.LENGTH_SHORT).show();
                break;
            case R.id.action_item3:
                Toast.makeText(MainActivity.this, "菜单三", Toast.LENGTH_SHORT).show();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}

效果:

实例二:动态设置

package com.example.demo15;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
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);
    }

    /**
     * 添加菜单
     * @param menu
     * @return
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        //getMenuInflater().inflate(R.menu.menu, menu);

        menu.add(1, 100, 1, "菜单一");
        menu.add(1, 101, 1, "菜单二");
        menu.add(1, 102, 1, "菜单三");
        MenuItem menu1 = menu.add(1, 103, 1, "菜单四");
        menu1.setTitle("新菜单");

        return true;
    }

    /**
     * 菜单事件监听
     * @param item
     * @return
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case 100:
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                item.setIntent(intent);
                break;
            case 101:
                Toast.makeText(MainActivity.this, "菜单二", Toast.LENGTH_SHORT).show();
                break;
            case 102:
                Toast.makeText(MainActivity.this, "菜单三", Toast.LENGTH_SHORT).show();
                break;
            case 103:
                Toast.makeText(MainActivity.this, "菜单四", Toast.LENGTH_SHORT).show();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}

效果:

 

© 著作权归作者所有

大道无名
粉丝 29
博文 161
码字总数 96019
作品 0
宣城
程序员
私信 提问
Android学习笔记(一) 开发环境的搭建

在搭建Android开发环境之前,你需要准备如下几个文件: 其中android-sdks可以到官网(http://developer.android.com/index.html)下载。 2. 安装JDK运行环境 这个是Java环境所必须的,也很简...

半夏alvin
2014/02/27
205
0
张高兴的 Xamarin.Android 学习笔记:(一)环境配置

  最近在自学 Xamarin 和 Android ,同时发现国内在做 Xamarin 的不多。我在自学中间遇到了很多问题,而且百度到的很多教程也有些过时,现在打算写点东西稍微总结下,顺便帮后人指指路了。...

张高兴
2017/01/13
0
0
Android版Google Chrome迎来更新提示特性

近期您在Android设备上使用测试版Chrome时可能已经注意到一个图标,提示您立即更新浏览器到最新版本,而在这之前,在Android上的升级工作是由Play商店应用程序处理的。与任何其他应用一样,您...

稿源:
04/01
0
0
android开发_SimpleAdapter适配器

新建项目: 项目结构: drawable-hdpi文件夹中的图片是自己加入的。主要是在菜单选项中显示的图片: 运行效果: 代码部分: main.xml item_menu.xml MainActivity.java package com.b510; i...

Pikachu“
2013/01/02
1K
1
[图]Android端Chrome 79更新:新增叠加“预览标签页”右键选项

Android端的Chrome 79浏览器在近日的版本更新中,在右键菜单中新增了名为“Preview Page”的新选项,可以在当前页面叠加的状态下“预览”该链接页面。此外Chromium团队即将会为这些预览内容显...

稿源:
10/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何递归计算目录中的所有代码行?

我们有一个PHP应用程序,并希望计算特定目录及其子目录下的所有代码行。 我们不需要忽略评论,因为我们只是想弄清楚。 wc -l *.php 该命令在给定目录中运行良好,但忽略子目录。 我当时认为...

技术盛宴
32分钟前
3
0
使用 try-with-resources 优雅关闭资源

我们知道,在 Java 编程过程中,如果打开了外部资源(文件、数据库连接、网络连接等、redis),我们必须在这些外部资源使用完毕后,手动关闭它们。 因为外部资源不由 JVM 管理,无法享用 JVM ...

七弦桐
39分钟前
4
0
04.深入浅出索引(上)

简单来说,索引的出现就是为了提高数据查询效率,就像书的目录一样。 索引的常见模型 索引实现的方式有很多种,所以这里就引入了索引模型的概念,可以用于提高读写效率的数据结构很多,比较常...

scgaopan
42分钟前
5
0
Redis哨兵、复制、集群的设计原理,以及区别

谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 **哨兵(Sentinel):**可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的...

Java阿七
52分钟前
5
0
浅析laravel路由执行原理

目前很多文章已经对Laravel的执行原理做了详细介绍,这里只是为了个人做一下简单记录 首先看入口 index.php 关键的执行函数就是 handle方法 ,但是前面的几个预处理函数,包括了整合框架的大...

冻结not
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部