Android开发系列(二十九):使用ContextMenu创建上下文菜单
来源:程序员人生 发布时间:2014-11-19 09:03:41 阅读次数:3687次
在上1篇我们介绍了创建选项菜单,这里我们介绍下创建上下文菜单。
上下文菜单就是通太长按某1段文字,然后出来相应的菜单。就比如贴吧,当你长安某1楼层,就会弹出来1个“复制”这1楼层文字的菜单,点1下“复制”,这段文字就保存在你手机的临时存储的地方了,可以在别的地方黏贴。
开发上下文菜单的步骤:
1、重写Activity的onCreateContextMenu(ContextMenu menu,View source,ContextMenu.Context MenuInfo menuInfo)方法
2、调用Activity的registerForContextMenu(View view)方法为view组件注册上下文菜单
接下来,我们通过1个具体的利用来做下说明
首先,我们创建1个Android项目,然后我们编辑main.xml文件:
<?xml version="1.0" encoding="utf⑻"?>
<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>
通过这个XML文件,我们定义了1行文本,可以通太长按这段文本来弹出上下文菜单,单击相应选项修改背风景
然后,我们看下ContextMenuTest.java:
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;
public class ContextMenuTest extends Activity
{
// 为每一个菜单定义1个标识
final int MENU1 = 0x111;
final int MENU2 = 0x112;
final int MENU3 = 0x113;
private TextView txt;
@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, "蓝色");
// 将3个菜单项设为单选菜单项
menu.setGroupCheckable(0, true, true);
//设置上下文菜单的标题、图标
menu.setHeaderIcon(R.drawable.tools);
menu.setHeaderTitle("选择背风景");
}
// 上下菜单的菜单项被单击时触发该方法。
@Override
public boolean onContextItemSelected(MenuItem mi)
{
switch (mi.getItemId())
{
case MENU1:
mi.setChecked(true);
txt.setBackgroundColor(Color.RED);
break;
case MENU2:
mi.setChecked(true);
txt.setBackgroundColor(Color.GREEN);
break;
case MENU3:
mi.setChecked(true);
txt.setBackgroundColor(Color.BLUE);
break;
}
return true;
}
}
首先是重写onCreateContextMenu(ContextMenu menu, View source,ContextMenu.ContextMenuInfo menuInfo)
方法,然后通过menu.add()方法添加对应的菜单选项,
并且重写了onContextItemSelected(MenuItem mi)方法,在菜单选项被单击的时候会对其进行调用
下边是效果图:
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠