android各种菜单使用介绍

Android菜单的有这几种:

  1,OptionMenue:选项菜单
  2,contextMenu:上下文菜单
  3,SubMenu子菜单

其中,OptionMenue与contextMenu的区别(OptionMenue与SubMenu区别较小):
  1,OptionMenue对应的四activity,一个activity只能拥有一个选项菜单
  2,contextMenu对于的是View,每一个View都可以设置上下文菜单
  3,一般情况下contextMenu常用于ListView或者GridView;

下面分别进行详细的介绍:

第一:OptionMenue:选项菜单,

  1):菜单的实现:

    在activity中实现方法:onCreateOptionsMenu()

    1.1:设置菜单项可用代码动态设置menuadd();
        1.2:通过xml设置,getMenuInflater().inflate

  2):监听的实现:

    在activity中实现方法:onCreateOptionsMenu()

    示例如下:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        switch (id) {
        case R.id.action_menu_item1:
            //设置跳转界面
            Intent intent = new Intent(MainActivity.this, SettingActivity.class);
            item.setIntent(intent);
            //Toast.makeText(this, "点击了菜单1", 0).show();
            break;
        case R.id.action_menu_item2:
            Toast.makeText(this, "点击了菜单2", 0).show();
            break;
        }

        return super.onOptionsItemSelected(item);
    }

其中main.xml的实现如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.optionmenu.MainActivity" >

    <item
        android:id="@+id/action_menu_item1"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="设置"/>

    <item
        android:id="@+id/action_menu_item2"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="选项"/>
</menu>

第二:contextMenu:上下文菜单(windows下右键的弹出,Android下针对文件长按):

构成:图标,标题,菜单项,监听

创建方法:
  1,在View注册上下文菜单registerForContextMenu()
  2,添加上下文菜单内容onCreateContextMenu()
    2.1:可以通过代码动态添加
    2.2:可以加载xml文件夹中的菜单项
  3,设置菜单点击后的响应事件onContenxtItemSelected();

示例:mainActivity的实现如下:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        showListView();
    }
  //设置展示的列表
    private void showListView(){
        ListView listView = (ListView) findViewById(R.id.listview);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, getData());
        listView.setAdapter(adapter);
        this.registerForContextMenu(listView);//设置菜单选项
    }   //为列表设置数据
    private ArrayList<String> getData(){
        ArrayList<String> list = new ArrayList<String>();
        for(int i=0;i<15;i++){
            list.add("列表"+i);
        }
        return list;
    }

   @Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    //设置菜单显示内容
    menu.setHeaderTitle("操作");  //方法二:通过xml进行选项的设置
    menu.setHeaderIcon(R.drawable.ic_launcher);  //方法一:通过add动态的添加
//    menu.add(1, 1, 1, "复制");
//    menu.add(1, 2, 1, "粘贴");
//    menu.add(1, 3, 1, "剪切");
//    menu.add(1, 4, 1, "重命名");
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
}
   @Override
public boolean onContextItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case 1:
        Toast.makeText(this, "点击复制", 0).show();
        break;
    case 2:
        Toast.makeText(this, "点击粘贴", 0).show();
        break;
    case 3:
        Toast.makeText(this, "点击剪切", 0).show();
        break;
    case 4:
        Toast.makeText(this, "点击重命名", 0).show();
        break;
    }
    return super.onContextItemSelected(item);
}

}

第三:SubMenu子菜单:

这个实现起来和OptionMenue差不多,所需要实现的方法也是一致的,只是需要在onCreateOptionsMenu()方法中定义SubMenu

对象,

具体示例如下:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        // getMenuInflater().inflate(R.menu.main, menu);
        SubMenu file = menu.addSubMenu("文件");
        SubMenu edit = menu.addSubMenu("编辑");

        file.add(1, 1, 1, "新建");
        file.add(1, 2, 1, "打开");
        file.add(1, 3, 1, "保存");
        file.setHeaderTitle("文件操作");
        file.setHeaderIcon(R.drawable.ic_launcher);

        edit.add(2, 1, 1, "复制");
        edit.add(2, 2, 1, "粘贴");
        edit.add(2, 3, 1, "剪切");
        edit.add(2, 4, 1, "重命名");
        edit.setHeaderTitle("编辑操作");
        edit.setHeaderIcon(R.drawable.ic_launcher);

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        if(item.getGroupId()==1){
            switch (item.getItemId()) {
            case 1:
                Toast.makeText(this, "点击新建", 0).show();
                break;
            case 2:
                Toast.makeText(this, "点击打开", 0).show();
                break;
            case 3:
                Toast.makeText(this, "点击保存", 0).show();
                break;
            }
        }else if(item.getGroupId()==2){
            switch (item.getItemId()) {
             case 1:
                Toast.makeText(this, "点击复制", 0).show();
                break;
             case 2:
                Toast.makeText(this, "点击粘贴", 0).show();
                break;
             case 3:
                Toast.makeText(this, "点击剪切", 0).show();
                break;
            case 4:
                Toast.makeText(this, "点击重命名", 0).show();
                break;
            }
        }
        return super.onOptionsItemSelected(item);
    }
}

作者:Darren

微博:@IT_攻城师

github:@Darren90

出处:http://www.cnblogs.com/fengtengfei/

时间: 2024-08-08 12:51:23

android各种菜单使用介绍的相关文章

[Android]复合菜单

一.概述 public boolean onCreateOptionsMenu(Menu menu):使用此方法调用OptionsMenu . public boolean onOptionsItemSelected(MenuItem item):选中菜单项后发生的动作. public void onOptionsMenuClosed(Menu menu):菜单关闭后发生的动作. public boolean onPrepareOptionsMenu(Menu menu):选项菜单显示之前onP

Android 6.0 Marshmallow介绍

Android 6.0 Marshmallow介绍 Android 6.0 (M) 为用户和应用开发者提供了新功能.本文旨在介绍其中最值得关注的 API和重点介绍您应该了解并在开发应用时加以考虑的一些主要变更. 1.Android 6.0新增功能与特性 指纹身份验证: 此版本提供了一些新的 API,在受支持的设备上,用户只需扫描其指纹即可完成身份验证,这些 API 还可与 Android 密钥库系统结合使用. 要通过指纹扫描验证用户身份,请获取新 FingerprintManager 类的实例,

Android侧滑菜单DrawerLayout(抽屉布局)实现

应用场景: 由于侧滑菜单有更好的用户体验效果,所以更多的App使用侧滑抽屉式菜单列表,如网易客户端.百度影音.爱奇艺等等.至此,侧滑菜单有了更多的使用需求. 知识点介绍: 实现侧滑菜单功能的方法有很多,如果开源的项目SlidingMenu,下载地址为https://github.com/jfeinstein10/SlidingMenu.该开源项目依赖于另一个开源项目ActionBarSherlock,下载地址为https://github.com/JakeWharton/ActionBarShe

Android滑动菜单框架完全解析,教你如何一分钟实现滑动菜单特效

本文首发于CSDN博客,转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744400 之前我向大家介绍了史上最简单的滑动菜单的实现方式,相信大家都还记得.如果忘记了其中的实现原理或者还没看过的朋友,请先去看一遍之前的文章 Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现 ,因为我们今天要实现的滑动菜单框架也是基于同样的原理的. 之前的文章中在最后也提到了,如果是你的应用程序中有很多个Activity都需

从零开始学android&lt;Menu菜单组件.三十.&gt;

在Android系统之中,菜单一共有三类:选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 今天我们就用几个例子来分别介绍下菜单的使用 activity类中长见的方法 1 public void closeContextMenu() 普通 关闭上下文菜单 2 public void closeOptionsMenu() 普通 关闭选项菜单 3 public boolean onContextItemSelected(MenuItem item)

BottomBar之Android底部菜单

BottomBar之Android底部菜单 前言:开源项目BottomBar,实现Android底部菜单(常用菜单,BottomBar实现动画(上下式)+消息菜单,BottomBar+ViewPager+Fragment实现炫酷的底部导航效果) 效果: 开发环境:AndroidStudio2.2.1+gradle-2.14.1 引入依赖: compile 'com.android.support:appcompat-v7:23.0.0' compile 'com.android.support:

Android四大基本组件介绍与生命周期

主要参考: 1.http://blog.csdn.net/android_tutor/article/details/5772285 2.http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html Android四大基本组件介绍与生命周期,布布扣,bubuko.com

Android文件监控FileObserver介绍

在前面的Linux文件系统Inotify机制中介绍了Linux对文件变更监控过程.Android系统在此基础上封装了一个FileObserver类来方便使用Inotify机制.FileObserver是一个抽象类,需要定义子类实现该类的onEvent抽象方法,当被监控的文件或者目录发生变更事件时,将回调FileObserver的onEvent()函数来处理文件或目录的变更事件. 事件监控过程 在FileObserver类中定义了一个静态内部类ObserverThread,该线程类才是真正实现文件

Android反编译工具介绍与简单实用方法

Android反编译工具介绍与简单实用方法 Android反编译的目的无非就是为了看到APK的xml.资源和代码: 得到代码的方式:直接解压APK文件 --> 得到classes.dex文件 --> 使用 dex2jar classes.dex classes.jar生成jar文件 --> [可选的解压jar文件] -->使用XJad或者JDCompiler查看源代码 得到XML的方式: 方式1:直接解压APK文件 --> 通过axmlprinter工具查看XML文件(这种方