CONTEXT MENU简介

安卓中的上下文菜单是经过长按控件元素触发的,要注意的是每次都会触发onCreateContextMenu方法:java

main.xmlandroid

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="可经过上下文菜单修改背景色"
        android:textSize="15pt" />

</LinearLayout>

ContextMenuTest.javaapp

package org.crazyit.ui;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;

/**
 * Description: <br/>
 * site: <a href="http://www.crazyit.org">crazyit.org</a> <br/>
 * Copyright (C), 2001-2014, Yeeku.H.Lee <br/>
 * This program is protected by copyright laws. <br/>
 * Program Name: <br/>
 * Date:
 * 
 * @author Yeeku.H.Lee kongyeeku@163.com
 * @version 1.0
 */
public class ContextMenuTest extends Activity {
    // 为每一个菜单定义一个标识
    final int MENU1 = 0x111;
    final int MENU2 = 0x112;
    final int MENU3 = 0x113;
    private TextView txt;
    int selectedIndex = -1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        txt = (TextView) findViewById(R.id.txt);
        // 为文本框注册上下文菜单
        registerForContextMenu(txt); //
    }

    // 建立上下文菜单时触发该方法
    @Override
    public void onCreateContextMenu(ContextMenu menu, View source,
            ContextMenu.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);
        menu.setHeaderTitle("选择背景色");
        if (selectedIndex >= 0) {
            menu.getItem(selectedIndex).setChecked(true);
        }
    }

    // 上下菜单的菜单项被单击时触发该方法。
    @Override
    public boolean onContextItemSelected(MenuItem mi) {
        switch (mi.getItemId()) {
        case MENU1:
            txt.setBackgroundColor(Color.RED);
            selectedIndex = 0;
            break;
        case MENU2:
            txt.setBackgroundColor(Color.GREEN);
            selectedIndex = 1;
            break;
        case MENU3:
            txt.setBackgroundColor(Color.BLUE);
            selectedIndex = 2;
            break;
        }
        return true;
    }
}

截图:ide

image