zoukankan      html  css  js  c++  java
  • android之菜单实现

    范例说明:

         本文着重介绍下menu的创建,上下文菜单,子菜单,选项菜单, onCreateContextMenu,onCreateOptionsMenu,onContextItemSelected,onOptionsItemSelected前两个方法用于重写创建菜单选项

    ,后两个方法介绍菜单选择后的事件。

    运行效果如图:

           上下文菜单                                                                       选项菜单

    一:首先看下布居res/layout/main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/context_menu"
        android:id="@+id/context_menu"
        />
    <TextView
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:text="@string/sub_menu"
         android:id="@+id/sub_menu"
         />
    </LinearLayout>

    二:res/values/strings.xml

    <resources>
       
        <string name="app_name">android之菜单</string>
    <string name="context_menu">上下文菜单</string>
    <string name="sub_menu">多级上下文菜单</string>
    </resources>

    三:代码分析 main.java

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.ContextMenu;
    import android.view.ContextMenu.ContextMenuInfo;
    import android.view.Menu;
    import android.view.SubMenu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.TextView;
    import android.widget.Toast;


    public class menu extends Activity{
        private TextView context_menu,sub_menu;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //context_menu注册上下文菜单(长按呼出上下文菜单)
            context_menu=(TextView)findViewById(R.id.context_menu);
            this.registerForContextMenu(context_menu);
            //sub_context注册多级上下文菜单
            sub_menu=(TextView)findViewById(R.id.sub_menu);
            this.registerForContextMenu(sub_menu);
        }
     // 重写 onCreateContextMenu 用以创建上下文菜单
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
           
            if(v==context_menu){
                menu.setHeaderTitle("上下文菜单");
                 // 第一个参数:组ID
                // 第二个参数:菜单项ID
                // 第三个参数:顺序号
                // 第四个参数:菜单项上显示的内容

                menu.add(1,0,0,"菜单一");
                menu.add(1,1,1,"菜单二");
                menu.add(1,2,3,"菜单三").setCheckable(true);
       
            }
            // ContextMenu.addSubMenu("菜单名称") - 用来添加子菜单。子菜单其实就是一个特殊的菜单
            else if(v==sub_menu){
                menu.setHeaderTitle("多级上下文菜单");
                SubMenu sub=menu.addSubMenu("父菜单一");
                sub.add(0,0,0,"菜单一");
                sub.add(0,1,1,"菜单二");
                sub.setGroupCheckable(0, true, true);
                SubMenu sub2=menu.addSubMenu("父菜单二");
                sub2.add(1,0,0,"菜单三");
                sub2.add(1,1,1,"菜单四");
                sub2.setGroupCheckable(1, true, false);
            }
           
        }
        // 重写 onContextItemSelected用以响应上下文菜单
        @Override
        public boolean onContextItemSelected(MenuItem item){
            super.onContextItemSelected(item);
             Toast.makeText(this,  String.valueOf(item.getTitle()), Toast.LENGTH_SHORT).show();
             return false;
        }
        // 重写 onCreateOptionsMenu 用以创建选项菜单
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            super.onCreateOptionsMenu(menu);
            // setIcon() - 设置菜单项的图标
            // setAlphabeticShortcut() - 设置选中此菜单项的快捷键
            // 注:菜单项超过 6 个的话,第 6 个菜单将会变为  More 菜单,多余的菜单会在单击 More 菜单之后显示出来
            menu.add(0, 0, 0, "菜单1").setIcon(R.drawable.icon);
            menu.add(0, 1, 1, "菜单2");
            menu.add(0, 2, 2, "菜单3").setAlphabeticShortcut('a');
            menu.add(0, 3, 3, "菜单4");
            menu.add(0, 4, 4, "菜单5");
            menu.add(0, 5, 5, "菜单6");
            menu.add(0, 6, 6, "菜单7");
            menu.add(0, 7, 7, "菜单8");

            return true;
        }
      
       
     // 重写 onOptionsItemSelected 用以响应选项菜单
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            super.onOptionsItemSelected(item);
           
            Toast.makeText(this, String.valueOf(item.getTitle()), Toast.LENGTH_SHORT).show();

            return false;
        }
      }

  • 相关阅读:
    用JavaScript 实现变速回到顶部
    导出数据到Excel
    Jquery ajax调用webService,远程访问出错解决办法
    火狐和IE的window.event对象详解
    硬盘、U盘添加漂亮背景
    JS 获取当前日期时间(兼容IE FF)
    Base64编码
    师生关系
    关于计算机导论的问题
    自我介绍
  • 原文地址:https://www.cnblogs.com/stulife/p/1804492.html
Copyright © 2011-2022 走看看