CONTEXT MENU简介

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

main.xml

<?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.java

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 [email protected]

 * @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;

    }

}

截图:

image

你可能感兴趣的:(context)