詳解Android中的Menu菜單鍵_Android

來源:互聯網
上載者:User

Android中的設定按鈕:長按或點擊菜單鍵

1.長按選項:

布局檔案:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MenuActivity" ><TextViewandroid:id="@+id/menutext"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="第一種方法建立菜單"android:textSize="sp" /><TextViewandroid:id="@+id/menutext"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="第二種方法建立菜單"android:textSize="sp" /><ListViewandroid:id="@+id/menulist"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_marginTop="dp" ></ListView></LinearLayout> 

實現過程:

private ListView list;private TextView lv;String[] str = { "TextView", "EditView", "Toast(訊息框)" };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_menu);list = (ListView) findViewById(R.id.menulist);ArrayAdapter<String> arr = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_, str);list.setAdapter(arr);list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {menu.clear();menu.clearHeader();menu.setHeaderIcon((R.drawable.ic_launcher));menu.setHeaderTitle("我是ListView");menu.add(, , , "刪除");menu.add(, , , "修改");}});// 第一種方法TextView tv = (TextView) findViewById(R.id.menutext);this.registerForContextMenu(tv);// 第二種方法lv = (TextView) findViewById(R.id.menutext);lv.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {menu.setHeaderTitle("長度-ContextMenu");menu.add(, , , "複製");SubMenu sb = menu.addSubMenu("尋找");sb.add(, , , "按id尋找");sb.add(, , , "按名稱尋找");}});}

2.長按功能表項目:

private ListView list;private TextView lv;String[] str = { "TextView", "EditView", "Toast(訊息框)" };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_menu);list = (ListView) findViewById(R.id.menulist);ArrayAdapter<String> arr = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_, str);list.setAdapter(arr);list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {menu.clear();menu.clearHeader();menu.setHeaderIcon((R.drawable.ic_launcher));menu.setHeaderTitle("我是ListView");menu.add(, , , "刪除");menu.add(, , , "修改");}});// 第一種方法TextView tv = (TextView) findViewById(R.id.menutext);this.registerForContextMenu(tv);// 第二種方法lv = (TextView) findViewById(R.id.menutext);lv.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {menu.setHeaderTitle("長度-ContextMenu");menu.add(, , , "複製");SubMenu sb = menu.addSubMenu("尋找");sb.add(, , , "按id尋找");sb.add(, , , "按名稱尋找");}});}

下面給大家補充點Menu的基本用法

使用xml定義Menu

菜單資源檔必須放在res/menu目錄中。菜單資源檔必須使用<menu>標籤作為根節點。除了<menu>標籤外,還有另外兩個標籤用於設定功能表項目和分組,這兩個標籤是<item>和<group>。

<menu>標籤沒有任何屬性,但可以嵌套在<item>標籤中,表示子功能表的形式。不過<item>標籤中不能再嵌入<item>標籤。

1.<item>標籤的屬性含義如下:

Id:表示功能表項目的資源ID

menuCategory:同種功能表項目的種類。該屬性可取4個值:container、system、secondary和alternative。通過menuCategroy屬性可以控制功能表項的位置。例如將屬性設為system,表示該功能表項目是系統功能表,應放在其他種類功能表項目的後面。

orderInCategor:同種類菜單的排列順序。該屬性需要設定一個整數值。例如menuCategory屬性值都為system的3個功能表項目(item1、item2和item3)。將這3個功能表項目的orderInCategory屬性值設為3、2、1,那麼item3會顯示在最前面,而item1會顯示在最後面。

title:功能表項目標題(功能表項目顯示的文本)

titleCondensed:功能表項目的短標題。當功能表項目標題太長時會顯示該屬性值

icon:功能表項目表徵圖資源ID

alphabeticShortcut:功能表項目的字母快速鍵

numericShortcut:功能表項目的數字快速鍵

checkable:表示功能表項目是否帶複選框。該屬性可設計為true或false

checked:如果功能表項目帶複選框(checkable屬性為true),該屬性工作表示複選框預設狀態是否被選中。可設定的值為true或false

visible:功能表項目預設狀態是否可視

enable:功能表項目預設狀態是否被啟用

2.<group>標籤的屬性含義如下:

id:表示菜單組的ID

menuCategory:與<item>標籤的同名屬性含義相同。只是範圍為菜單組

orderInCategory:與<item>標籤的同名屬性含義相同。只是範圍為菜單組

checkableBehavior:設定該組所有功能表項目上顯示的選擇組件(CheckBox或Radio Button)。如果將該屬性值設為all,顯示

CheckBox組件;如果設為single,顯示Radio Button組件;如果設為none,顯示正常的功能表項目(不顯示任何選擇組件)。要注意的是,Android SDK官方文檔在解釋該屬性時有一個筆誤,原文是:

Whether the items are checkable. Valid values: none, all(exclusive/radiobuttons), single(non-exclusive/checkboxes).

相反了,正確應該是

all(non-exclusive/checkboxes),single(exclusive/radiobuttons).

visible:表示當前組中所有功能表項目是否顯示。該屬性可設定的值是true或false

enable:表示當前組中所有功能表項目是否被啟用。該屬性可設定的值是true或false

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.