zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    webpack进阶(二)
    webpack的loader和plugin的区别
    接口和面向接口编程
    设计原则与编程技巧汇总
    W3C的盒子模型和IE的盒子模型
    React的组件
    React的路由react-router
    三种编程命名规则:驼峰命名法,帕斯卡命名法,匈牙利命名法
    gulp 构建 demo
    antd 表单的两种校验方式
  • 原文地址:https://www.cnblogs.com/fengtengfei/p/4009926.html
Copyright © 2011-2022 走看看