当前位置:主页 > android教程 > Android菜单的使用方法

Android学习之菜单的使用方法

发布:2023-03-12 11:00:01 59


本站精选了一篇相关的编程文章,网友金思嘉根据主题投稿了本篇教程内容,涉及到Android、菜单、Android菜单的使用方法相关内容,已被972网友关注,涉猎到的知识点内容可以在下方电子书获得。

Android菜单的使用方法

本文实例为大家分享了Android学习之菜单使用的具体代码,供大家参考,具体内容如下

Android中菜单包含上下文菜单和选项菜单两种类型。

使用统一的菜单类来管理菜单:

Menu、MenuItem、SubMenu三个类。

1.Menu类:

一个Menu对象代表一个菜单,是整个菜单的基础。
Menu类的常用方法:添加一个菜单:add(int groupId, int itemId, int order, CharSequence title)

2.MenuItem类:

MenuItem代表一个菜单项;
MenuItem往往是通过Menu的add方法来获取的。

3.subMenu类:

subMenu继承自Menu,其代表一个子菜单。

Menu、MenuItem、SubMenu的使用:
Menu通过add方法,来添加菜单项MenuItem并返回;
Menu通过addSubMenu方法,来添加自菜单SubMenu并返回;
通过MenuItem的多个方法,来设定菜单项的状态;
SubMenu继承自Menu,用相同方法,添加MenuItem及SubMenu;
通过SubMenu的多个方法,设定SubMenu的状态。

1.ContextMenu(上下文菜单):

ContextMenu(上下文菜单)类似于PC中的右键弹出菜单,当一个视图注册了上下文菜单时,长按该视图对象将出现一个提供相关功能的浮动菜单。上下文菜单可以被注册到任何视图对象中,最常见的是用于列表视图ListView中,但上下文菜单不支持图标和快捷键。

使用步骤如下:

(1)在Activity中使用上下文菜单,复写onCreateContextMenu() 和 onContextItemSelected()方法;
(2)为视图控件View中注册上下文菜单,使用registerForContextMenu()方法;
(3)在onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo info)中添加菜单项menu.add();
(4)在onContextItemSelected()中通过设置菜单的id来实现菜单子项的监听。

ContextMenu在Activity中的回调函数:

onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo info)
//初始化,第一次调用菜单时执行,用于创建菜单项目
onContextItemSelected(MenuItem item)
//菜单项被选中后调用,用于处理菜单事件,根据传递的item参数,确定具体的菜单项,进行设计
onContextMenuClosed(Menu menu) //菜单被关闭时调用
``

2.OptionsMenu(选项菜单):

使用步骤如下:

(1)在Activity中复写onCreateOptionsMenu()和onOptionsItemSelected()方法;

(2)在onCreateOptionsMenu(Menu menu)中添加菜单选项,有两种方式:

a、调用menu.add()
b、从布局文件中添加,在res下新建menu文件夹,创建menu文件,填写相应的选项;

(2)为视图控件View中注册上下文菜单,使用registerForContextMenu()方法;

OptionsMenu选项菜单在Activity中的回调方法:

onCreateOptionsMenu(Menu menu) 
//初始化选项菜单,初次显示菜单时调用
public boolean onOptionsItemSeleted(MenuItem item)
//选项菜单中的某个选项被选中时,调用该方法
public void onOptionMenuClosed(Menu menu)
//当关闭菜单时调用该方法

☆☆☆Android Studio实现使用菜单的使用

1.打开Android Studio,新建工程后,在activity_main.xml中,编写代码。



    
    
        
    
        

2.在MainActivity.java中,编写相关代码。

package com.example.menu;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    TextView tv;
    ImageView iv;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv= (TextView) findViewById(R.id.textView);
        iv= (ImageView) findViewById(R.id.imageView);
        registerForContextMenu(tv);
        registerForContextMenu(iv);
    }
    
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        if (v.getId()==tv.getId()) {
            //menu.add(0,0,0,"打开");
            menu.add(0, 0, 0, "大号字体");
            //menu.add(0,1,1,"保存");
            menu.add(0, 1, 1, "小号字体");
            //SubMenu sm1=menu.addSubMenu(0,2,2,"编辑");
            SubMenu sm1 = menu.addSubMenu(0, 2, 2, "颜色");
            //sm1.add(0,3,3,"复制");
            //sm1.add(0,4,4,"粘贴");
            sm1.add(0, 3, 3, "黑色");
            sm1.add(0, 4, 4, "红色");
        }else {
            menu.add(1,5,5,"图片信息");
            menu.add(1,6,6,"图片说明");
        }
        super.onCreateContextMenu(menu, v, menuInfo);
    }
    
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case 0:
                tv.setTextSize(32);
                break;
            case 1:
                tv.setTextSize(16);
                break;
            case 3:
                tv.setTextColor(Color.BLACK);
                break;
            case 4:
                tv.setTextColor(Color.RED);
                break;
            case 5:
                Toast.makeText(this,"png格式图片,分辨率64",Toast.LENGTH_LONG).show();
                break;
            case 6:
                Toast.makeText(this,"这是安卓机器人的图片",Toast.LENGTH_LONG).show();
        }
        return super.onContextItemSelected(item);
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        SubMenu sub1=menu.addSubMenu(0,0,0,"文件");
        SubMenu sub2=menu.addSubMenu(0,1,1,"编辑");
        sub1.add(0,2,2,"打开");
        sub1.add(0,3,3,"保存");
        sub1.add(0,4,4,"另存为");
        sub2.add(0,5,5,"复制");
        sub2.add(0,6,6,"粘贴");
        menu.add(0,7,7,"退出");
        return super.onCreateOptionsMenu(menu);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case 2:
                break;
            case 3:
                break;
            case 4:
                break;
            case 7:
                finish();
        }
        return super.onOptionsItemSelected(item);
    }
}

运行结果:

这就是菜单的简单使用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。


参考资料

相关文章

  • Android中FileProvider的各种场景应用详解

    发布:2023-03-05

    这篇文章主要为大家介绍了Android中FileProvider的各种场景应用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • Kotlin语言使用WebView示例介绍

    发布:2023-03-07

    随着后台技术的不断发展,App前端的应用都布置了Web页面的界面,这个界面就是由WebView组件渲染出来的。WebView由如下优点:可以直接显示和渲染Web页面或者网页;可以直接调用网络上或者本地的html文件,也可以和JavaScript交互使用


  • Android获取设备传感器的方法

    发布:2023-03-11

    这篇文章主要为大家详细介绍了Android获取设备传感器的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • Android 菜单栏DIY实现效果详解

    发布:2023-03-09

    这篇文章主要为大家介绍了Android 菜单栏DIY实现效果详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • Android Jetpack组件中LifeCycle作用详细介绍

    发布:2023-03-08

    Jetpack是谷歌在Google I/O 2017大会上发布一套帮助开发者解决Android架构设计的方案,而Lifecycle是Jetpack architecture下的一部分,一起来看一下Lifecycle的使用及原理分析


  • linphone-sdk-android版本号生成解析

    发布:2023-03-09

    这篇文章主要为大家介绍了linphone-sdk-android版本号生成解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • Android NDK 开发中 SO 包大小压缩方法详解

    发布:2023-03-04

    这篇文章主要为为大家介绍了Android NDK 开发中 SO 包大小压缩方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • Android性能优化之捕获java crash示例解析

    发布:2023-03-09

    这篇文章主要介绍了Android性能优化之捕获java crash示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


网友讨论