Android實(shí)現(xiàn)類似于PC中的右鍵彈出菜單效果
Android系統(tǒng)中的ContextMenu(上下文菜單)類似于PC中的右鍵彈出菜單,當(dāng)一個(gè)視圖注冊(cè)到一個(gè)上下文菜單時(shí),執(zhí)行一個(gè)在該對(duì)象上的“長按”動(dòng)作,將出現(xiàn)一個(gè)提供相關(guān)功能的浮動(dòng)菜單。上下文菜單可以被注冊(cè)到任何視圖對(duì)象中,不過,最常見的是用于列表視圖ListView的item,在按中列表項(xiàng)時(shí),會(huì)轉(zhuǎn)換其背景色而提示將呈現(xiàn)上下文菜單。
注意:上下文菜單不支持圖標(biāo)和快捷鍵。
為了創(chuàng)建一個(gè)上下文菜單,你必須重寫這個(gè)活動(dòng)的上下文菜單回調(diào)函數(shù):onCreateContextMenu() 和 onContextItemSelected()。在回調(diào)函數(shù)onCreateContextMenu()里,你可以通過使用一個(gè)add()方法來添加菜單項(xiàng),或者通過擴(kuò)充一個(gè)定義在XML中的菜單資源。然后,通過registerForContextMenu()為這個(gè)視圖注冊(cè)一個(gè)上下文菜單ContextMenu.
下面我通過一個(gè)實(shí)例Demo來展示下ContextMenu的基本使用,通過手動(dòng)添加Menu菜單和XML文件兩種方式來配置Menu的選項(xiàng)。
1、該Demo的工程結(jié)構(gòu)目錄圖如下:
2、res/layout目錄下的main.xml布局文件源碼如下:
<?xml version="1.0" encoding="utf-8"?> <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:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello,This is Andy's Blog!"/> <ListView android:id="@+id/lv" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout>
3、 res/menu目錄下的 cmenu.xml 菜單選項(xiàng)文件源碼如下:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/add" android:title="增加"/> <item android:id="@+id/update" android:title="更新"/> <item android:id="@+id/delete" android:title="刪除"/> </menu>
4、com.andyidea.menudemo包下的 MenuActivity.java 源碼如下:
package com.andyidea.menudemo; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class MenuActivity extends Activity { ListView lv; private ArrayAdapter<String> adapter; private List<String> alist = new ArrayList<String>(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); lv = (ListView)findViewById(R.id.lv); alist.add("第一"); alist.add("第二"); alist.add("第三"); adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,alist); lv.setAdapter(adapter); //注冊(cè)視圖對(duì)象,即為ListView控件注冊(cè)上下文菜單 registerForContextMenu(lv); } /** * 創(chuàng)建上下文菜單選項(xiàng) */ @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { //1.通過手動(dòng)添加來配置上下文菜單選項(xiàng) //menu.add(0, 1, 0, "修改"); //menu.add(0, 2, 0, "刪除"); //2.通過xml文件來配置上下文菜單選項(xiàng) MenuInflater mInflater = getMenuInflater(); mInflater.inflate(R.menu.cmenu, menu); super.onCreateContextMenu(menu, v, menuInfo); } /** * 當(dāng)菜單某個(gè)選項(xiàng)被點(diǎn)擊時(shí)調(diào)用該方法 */ @Override public boolean onContextItemSelected(MenuItem item) { switch(item.getItemId()){ case 1: Toast.makeText(this, "你選擇了手動(dòng)修改", Toast.LENGTH_SHORT).show(); break; case 2: Toast.makeText(this, "你選擇了手動(dòng)刪除", Toast.LENGTH_SHORT).show(); break; case R.id.add: Toast.makeText(this, "你選擇了XML增加", Toast.LENGTH_SHORT).show(); break; case R.id.update: Toast.makeText(this, "你選擇了XML更新", Toast.LENGTH_SHORT).show(); break; case R.id.delete: Toast.makeText(this, "你選擇了XML刪除", Toast.LENGTH_SHORT).show(); break; } return super.onContextItemSelected(item); } /** * 當(dāng)上下文菜單關(guān)閉時(shí)調(diào)用的方法 */ @Override public void onContextMenuClosed(Menu menu) { // TODO Auto-generated method stub super.onContextMenuClosed(menu); } }
5、Demo運(yùn)行后的運(yùn)行截圖如下:
希望本文所述對(duì)大家學(xué)習(xí)Android軟件編程有所幫助。
- android popwindow實(shí)現(xiàn)左側(cè)彈出菜單層及PopupWindow主要方法介紹
- Android ListView長按彈出菜單二種實(shí)現(xiàn)方式示例
- Android之用PopupWindow實(shí)現(xiàn)彈出菜單的方法詳解
- android自定義popupwindow仿微信右上角彈出菜單效果
- Android PopupWindow實(shí)現(xiàn)右側(cè)、左側(cè)和底部彈出菜單
- 簡單實(shí)現(xiàn)Android彈出菜單效果
- Android仿QQ滑動(dòng)彈出菜單標(biāo)記已讀、未讀消息
- Android使用Activity實(shí)現(xiàn)從底部彈出菜單或窗口的方法
- Android中微信小程序開發(fā)之彈出菜單
- Android實(shí)現(xiàn)底部彈出按鈕菜單升級(jí)版
相關(guān)文章
Android開發(fā)之Android.mk模板的實(shí)例詳解
這篇文章主要介紹了Android開發(fā)之Android.mk模板的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10Android原生側(cè)滑控件DrawerLayout使用方法詳解
這篇文章主要為大家詳細(xì)介紹了Android原生側(cè)滑控件DrawerLayout的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Android編程中Perferences的用法實(shí)例分析
這篇文章主要介紹了Android編程中Perferences的用法,以實(shí)例形式較為詳細(xì)的分析了配置文件preferences.xml的功能、定義及使用方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11android?sharedUserId?使用知識(shí)盲點(diǎn)解析
這篇文章主要為大家介紹了android?sharedUserId使用的知識(shí)盲點(diǎn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Android中ScrollView嵌套GridView顯示不全解決方法
這篇文章主要介紹了Android中ScrollView嵌套GridView顯示不全解決方法的相關(guān)資料,需要的朋友可以參考下2017-04-04android 加載本地聯(lián)系人實(shí)現(xiàn)方法
在android開發(fā)過程中,有些功能需要訪問本地聯(lián)系人列表,本人搜集整理了一番,拿出來和大家分享一下,希望可以幫助你們2012-12-12詳解Android 7.0 Settings 加載選項(xiàng)
本篇文章主要介紹了Android 7.0 Settings 加載選項(xiàng),Android 7.0 Settings頂部多了一個(gè)建議選項(xiàng),多了個(gè)側(cè)邊欄,操作更加便捷了,有興趣的可以了解一下。2017-02-02