Android開發系列(二十九):使用ContextMenu創建上下文菜單
來源:程序員人生 發布時間:2014-11-19 09:03:41 閱讀次數:3848次
在上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)方法,在菜單選項被單擊的時候會對其進行調用
下邊是效果圖:

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈