微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > android ContextMenu

android ContextMenu

时间:09-12 来源:互联网 点击:

ContextMenu 继承自 Menu。上下文菜单不同于选项菜单,选项菜单服务于Activity,而上下文菜单是注册到某个View对象上的。如果一个View对象注册了上下文菜单,用户可以通过长按(约2秒) 该View对象上以呼出上下文菜单。

上下文菜单不支持快捷键(shortcut),其菜单选项也不能附带图标,但是可以为上下文菜单的标题指定图标

下面是一个ContextMenu的小例子,运行效果如下:

package xiaohang.zhimeng;

import android.app.Activity;

import android.os.Bundle;

import android.view.ContextMenu;

import android.view.MenuItem;

import android.view.View;

import android.view.ContextMenu.ContextMenuInfo;

import android.widget.EditText;

public class Activity01 extends Activity {

final int MENU1 = 1;

final int MENU2 = 2;

final int MENU3 = 3;

final int MENU4 = 4;

final int MENU5 = 5;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//为两个文本框注册上下文菜单

this.registerForContextMenu(findViewById(R.id.EditText01));

this.registerForContextMenu(findViewById(R.id.EditText02));

}

//添加上下文菜单

@Override

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo) {

//此方法在每次调用上下文菜单时都会被调用一次

menu.setHeaderIcon(R.drawable.car);

if (v==findViewById(R.id.EditText01)) {

menu.add(0, MENU1, 0, R.string.mi1);

menu.add(0, MENU2, 0, R.string.mi2);

menu.add(0, MENU3, 0, R.string.mi3);

}

else if (v==findViewById(R.id.EditText02)) {

menu.add(0, MENU4, 0, R.string.mi4);

menu.add(0, MENU5, 0, R.string.mi5);

}

}

//响应上下文菜单

@Override

public boolean onContextItemSelected(MenuItem item) {

switch (item.getItemId()) {

case MENU1:

case MENU2:

case MENU3:

EditText et1 = (EditText)this.findViewById(R.id.EditText01);

et1.append(\n + item.getTitle() + 被按下);

break;

case MENU4:

case MENU5:

EditText et2 = (EditText)this.findViewById(R.id.EditText02);

et2.append(\n + item.getTitle() + 被按下);

break;

}

return true;

}

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top