zoukankan      html  css  js  c++  java
  • 上下文菜单

         Android用ContextMenu来代表上下文菜单,为Android应用开发上下文菜单与开发选项菜单的方法基本相似,因为ContextMenu继承了Menu,因此程序可用相同的方法为它添加菜单项。

         当然,开发上下文菜单与开发选项菜单的区别在于:开发上下文菜单不是重写onCreateOptionsMenu(Menu menu)方法,而是重写onCreateContextMenu(ContextMenu menu,View source,ContextMenu.ContextMenuInfo menuInfo)方法。其中source参数代表触发上下文菜单的组件。

         开发上下文菜单的步骤如下。

         ①重写Activity的onCreteContextMenu(ContextMenu menu,View source,ContextMenu.ContextMenuInfo menuInfo)方法。

         ②调用Activity的registerForContextMenu(View view)方法为view组件注册上下文菜单。

         ③如果希望应用程序能为菜单项提供相应,可以重写onContextItemSelected(MenuItem mi)方法,或为指定菜单项绑定事件监听器。

        ContextMenu提供了如下方法,同样可以为上下文菜单设置图标、标题等。

    • ContextMenu setHeaderIcon(Drawable icon):为上下文菜单设置图标。
    • ContextMenu setHeaderIcon(int iconRes):为上下文菜单设置图标。
    • ContextMenu setHeaderTitle(int titleRes):为上下文菜单设置标题。

        该程序的界面布局文件如下:

    <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:id="@+id/txt"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="15pt"
            android:text="可通过上下文菜单修改背景色" />
    </LinearLayout>

    该程序对应的后台Activity代码如下:

    package org.crazyit.helloworld;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.graphics.Color;
    import android.view.ContextMenu;
    import android.view.ContextMenu.ContextMenuInfo;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.TextView;
    
    public class ContextMenuTest extends Activity {
           //为每个菜单定义一个标识
        final int MENU1=0x111;
        final int MENU2=0x112;
        final int MENU3=0x113;
        
        private TextView txt;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.context_menu_test);
            txt=(TextView)findViewById(R.id.txt);
            //为文本框注册上下文菜单
            registerForContextMenu(txt);//
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.context_menu_test, menu);
            return true;
        }
        //创建上下文菜单时触发该方法
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            menu.add(0,MENU1,0,"红色");
            menu.add(0,MENU2,0,"绿色");
            menu.add(0,MENU3,0,"蓝色");
            //将三个菜单项设为单选菜单项
            menu.setGroupCheckable(0, true, true);
            //设置上下文菜单的标题、图标
            menu.setHeaderIcon(R.drawable.tools);
            // TODO Auto-generated method stub
            //super.onCreateContextMenu(menu, v, menuInfo);
            menu.setHeaderTitle("选择背景色");
        }
        //上下文菜单的菜单项被单击时触发该方法
    
        @Override
        public boolean onContextItemSelected(MenuItem mi) {
            switch(mi.getItemId())
            {
            case MENU1:
                mi.setCheckable(true);
                txt.setBackgroundColor(Color.RED);
                break;
            case MENU2:
                mi.setCheckable(true);
                txt.setBackgroundColor(Color.GREEN);
                break;
            case MENU3:
                mi.setCheckable(true);
                txt.setBackgroundColor(Color.BLUE);
                break;
            }
            // TODO Auto-generated method stub
            //return super.onContextItemSelected(mi);
            return true;
        }
        
        
    
    }

    上面的程序重写了onCreateContextMenu(ContextMenu menu,View source,ContextMenu.ContextMenuInfo menuInfo)方法,该方法的内部为程序创建了一个上下文菜单。

       程序在①号代码除调用registerForContextMenu(txt)为txt组件(一个文本框组件)注册了上下文菜单,这意味着当用户长按该组时显示上下文菜单。上下文菜单如图所示。

        

  • 相关阅读:
    【html】页面制作规范文档
    【jquery】blockUI 弹出层
    前端攻城师所要掌握的知识和技能
    【html】edm 邮件制作指南
    【css】教你如何写出高效整洁的 css 代码——css优化
    前端开发神器notepad++以及zen coding神级插件
    百度统计流量研究院——了解互联网行业基本数据分布和趋势
    【css】我的 css 框架——base.css
    通过扩展方法 链式方法 为MVC 3 视图添加验证
    使用正则表达式抓取博客园列表数据
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3397363.html
Copyright © 2011-2022 走看看