Android中的上下文菜单(ContextMenu)使用案例

在Android中长按住一个控件(像一个文本显示框TextView,一个按钮Button都是一个控件)弹出的菜单为上下文菜单,创建一个上下文菜单分为下面几个步骤:

1、覆写onCreateContextMenu方法,生成对应的菜单子选项。

2、覆写onContextItemSelected方法,生成对应子选项的响应事件。

3、为一个控件注册上下文菜单。

下面看一个小例子:

1、在MainActivity的xml文件中添加一个TextView控件,ID为myTextV:

<TextView android:id="@+id/myTextV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

2、在MainActivity编写相应代码:

package com.yangzi.contextmenu;

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

public class MainActivity extends Activity {

    // 声明菜单子选项ID号
    private static final int ITEM1 = Menu.FIRST;
    private static final int ITEM2 = ITEM1 + 1;
    private static final int ITEM3 = ITEM1+2;
    //声明TextView控件
    private TextView myTextV;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到文本显示控件
        myTextV = (TextView)findViewById(R.id.myTextV);
        //为该文本控件注册上下文菜单
        registerForContextMenu(myTextV);
    }

    @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;
    }
    /*
     * 覆写onCreateContextMenu方法,建立上下午菜单
     *
     * */
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        /*
         * add方法的参数说明:
          * 参数一:group ID(int) :组ID,用于标示该子选项属于哪一个组
         * 参数二:item ID(int) :子选项ID,用于标示该子选项
         * 参数三:order ID(int): 显示顺序,用于标示该子选项显示顺序,默认为0,表示按添加顺序显示
         * 参数四:title (String): 用于定义该子选项的显示文字
         *
         * */
        menu.add(0,ITEM1,0,"背景红色");
        menu.add(0,ITEM2,0,"背景黄色");
        menu.add(0,ITEM3,0,"背景蓝色");
    }
    /*
     * 覆写该方法,添加相应的菜单相应事件
     *
     * */
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        /*
         * 根据选择的子选项(通过item ID来区分),进行不同的响应
         *
         * 这里使用的颜色资源要在res/values文件夹内的color.xml文件中声明
         *
         * */
        switch (item.getItemId()) {
        case ITEM1:
            //设置文本显示控件的背景
            myTextV.setBackgroundColor(getResources().getColor(R.color.red));
            break;
        case ITEM2:
            myTextV.setBackgroundColor(getResources().getColor(R.color.yellow));
            break;
        case ITEM3:
            myTextV.setBackgroundColor(getResources().getColor(R.color.white));
            break;
        default:
            break;
        }
        return true;
    }
}

自己动手试试,观察效果吧!

时间: 2024-08-03 21:03:56

Android中的上下文菜单(ContextMenu)使用案例的相关文章

Android进阶(二十八)上下文菜单ContextMenu使用案例

上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等操作,但是现在此操作莫名其妙的消失了.写了个测试Demo,如中图所示,一切按照逻辑显示正常.怪就怪在项目中无法显示,起初设想是因为Android系统版本太高问题,但是在别的手机上测试之后发现问题依旧存在.难道是因为顶部Tab标题栏遮挡住了选项菜单的显示?继续测试,通过在别的没有Tab标题栏的页面测试选项菜单,

Android学习笔记——创建一个简单的上下文菜单ContextMenu

例子目标: 在一个显示出来的内容区域内,触摸屏幕显示一个上下文菜单,并且实现监听,当选择菜单项的时候,获得用户选择的项的内容. 实现原理: 1.向内容Activity中的需要显示上下文菜单的内容区域注册上下文菜单响应 2.设计上下文菜单样式 3.在Activity中实现上下文菜单的方法 代码: 上下文菜单的XML内容 <?xml version="1.0" encoding="utf-8"?><menu xmlns:android="ht

Android中的子菜单(SubMenu)使用案例

Android中创建子菜单的步骤: 1.覆盖Activity中的onCreateOptionMenu()方法,调用Menu的addSubMenu()方法添加子菜单. 2.调用SubMenu的add方法,添加子菜单. 3.覆盖onContextItemSelected()方法,响应子菜单. 来看个小例子: package com.yangzi.submenu; import android.os.Bundle; import android.app.Activity; import android

Android 菜单 之 上下文菜单ContextMenu

所谓上下文菜单就是当我们长按某一个文件时弹出的菜单 操作这个菜单我们要重写onCreateContextMenu()方法 如上一篇文章一样,对于这个菜单中选型的操作也有动态添加和xml文件添加两种方法 首先是动态添加 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v

android,关于上下文菜单ContextMenu数据值的转递

在长按某view时,如该view有绑定OnCreateContextMenuListener,则会弹出ContextMenu上下文菜单,这类似于右键菜单,菜单弹出后点击某菜单项,则Activity或Fragment中的 public boolean onContextItemSelected(MenuItem item) 方法会响应菜单的点击,根据item的id来确定点击的是哪一个菜单项,从而进行进一步的操作. 那么现在的问题是,有时候我们只知道了点击的哪个菜单项是不够的,还需要知道更多的信息,

Android中的选项菜单(OptionMenu)使用案例

在Android中的每一个activity都捆绑了一个OptionMenu,它是通过调用OnCreateOptionMenu(Menu menu)函数来进行初始化,我们可以覆写这个函数,来设置一个activity的响应菜单.下面通过一个小例子来说明具体如何实现. package com.yangzi.optionmenu; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import

Android Dialog 创建上下文菜单

Android Dialog中的listview创建上下文菜单 listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.add(0, 0, 0, "天天"); menu.add(0, 1, 0, "人人

Android中自定义视图View之---开发案例

自定义视图View的案例 下面我们就是开始正式的进入自定义视图View了 在讲解正式内容之前,我们先来看一下基本知识 1.我们在自定义视图View的时候正确的步骤和方法 1).必须定义有Context/Attrbuite参数的构造方法,并且调用父类的方法 public LabelView(Context context, AttributeSet attrs) 不然会报错: 2).重写onMeasure方法 @Override protected void onMeasure(int width

android 中dialog,toast,optionmenu,contextmenu的使用

这几个界面是activity附带主界面之外,开发中常常会用到的界面元素, dialog,toast的界面都是可以自定义的. optionmenu和contextmenu 的界面也可自定义,但是没有dialog那么灵活,它只能自定义一些title,item之类的. 1.dialog自定义界面 AlertDialog dialog=new AlertDialog.Builder(MainActivity.this).create(); dialog.setView(view); 2.toast自定义