Android中文API(97)—— ContextMenu
前言
本章內容是android.view.ContextMenu,版本為Android 2.3 r1,翻譯來自"Kun",再次感謝"Kun" !期待你一起參與Android 中文API的翻譯,聯系我over140@gmail.com。
?
?
聲明
歡迎轉載,但請保留文章原始出處:)
?
農民伯伯:http://over140.blog.51cto.com/
Android中文翻譯組:http://goo.gl/6vJQl
?
?
正文
一、結構
?
public interface ContextMenu implements Menu
?
android.view.ContextMenu
?
?
二、概述
?
?? ? 擴展自Menu的上下文菜單提供了修改上下文菜單頭(header)的功能。(譯者注:當一個視圖注冊了上下文菜單時,執行一個在該對象上長按(2秒)的動作,將出現一個具有相關功能的浮動菜單。)
?? ? 上下文菜單不支持菜單項的快捷方式和圖標。
?? ? 當執行長按上下文菜單時,大多數情況會調用registerForContextMenu(View) 函數和重寫執行onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo)函數。(譯者注:因為要創建一個上下文菜單,你必須重寫這個活動的上下文回調函數onCreateContextMenu() 并且 通過registerForContextMenu(View) 為其注冊上下文菜單。)
?
?
三、內部類
?
???????? interface ?ContextMenu.ContextMenuInfo
獲得更多關于創建上下文菜單的信息。(?譯者注:例如:AdapterViews 使用這個類可以精確選擇adapter的位置來啟動上下文菜單。)
?
?
四、公共方法
?
public abstract void clearHeader ()
清除上下文菜單頭的信息。(譯者注:包括圖片和文字信息
?
Menu.clearHeader(); 后
)
?
public abstract ContextMenu setHeaderIcon (Drawable icon)
為上下文菜單頭設置圖標
參數
icon ???????? 你要使用的Drawable
?????????? 返回值
調用你設置修改的上下文菜單
?
public abstract ContextMenu setHeaderIcon (int iconRes)
設置上下文菜單頭圖標為指定的資源id
參數
iconRes ?你要使用的圖標資源的目錄
(譯者注:把圖標放入res/drawable/ 目錄下,R文件會自動生成對應項。設置方法如menu.setHeaderIcon(R.drawable.webtext)
這個上下文菜單頭是沒有設置圖標的
???????? ??????
這個上下文菜單頭是設置了圖標的?
?
?)
返回值
調用你設置修改過的上下文菜單
?
public abstract ContextMenu setHeaderTitle (int titleRes)
通過資源標識符為上下文菜單頭的標題欄設置文字。(譯者注:需要在res/string中先設置一段你需要的文字,如:<string name="titletest">這是一段測試文字</string>
然后通過R文件索引到這段文字,menu.setHeaderTitle(R.string.titletest))
參數????
titleRes ?所需文字資源的索引
?????????????????? 返回值
調用你設置修改過的上下文菜單
?
public abstract ContextMenu setHeaderTitle (CharSequence title)
設置上下文菜單的標題,顯示在標題欄
參數
title ???????? 標題要顯示的文字
???????????????? 返回值
調用你設置修改過的上下文菜單
?
public abstract ContextMenu setHeaderView (View view)
設置View 到上下文菜單頭上。將替代上下文菜單頭的圖標和標題(或者替代你之前設置的headerView)
參數
view ??????? 上下文菜單頭要使用的 View
???????????????? 返回值
調用你設置修改過的上下文菜單內容
?
?
五、補充
?
?
???????? 文章精選:
?????????????????? Android 的上下文菜單: Context Menu
?????????????????? android的ContextMenu
?????????????????? android 上下文菜單Context Menu
代碼示例:
Test_Contextmenu.java
public?class?Test_Contextmenu?extends?Activity?{????/**?Called?when?the?activity?is?first?created.?*/
????@Override
????public?void?onCreate(Bundle?savedInstanceState)?{
????????super.onCreate(savedInstanceState);
????????setContentView(R.layout.main);
????????TextView?txt1?=?(TextView)?this.findViewById(R.id.txt1);
????????this.registerForContextMenu(txt1);
????????TextView?txt2?=?(TextView)?this.findViewById(R.id.txt2);
????????this.registerForContextMenu(txt2);
????}??
????// 重寫 onCreateContextMenu 用以創建上下文菜單
?????@Override
????public?void?onCreateContextMenu(ContextMenu?menu,?View?v,
????????????ContextMenuInfo?menuInfo){
????????super.onCreateContextMenu(menu,?v,?menuInfo);
????????//?創建?R.id.txt1??的上下文菜單
????????if?(v?==?(TextView)?this.findViewById(R.id.txt1))?{
????????????menu.setHeaderIcon(R.drawable.icon);
????????????menu.setHeaderTitle(R.string.titletest);
????????????//menu.clearHeader();
????????????// 第一個參數:組ID
????????????// 第二個參數:菜單項ID
????????????// 第三個參數:順序號
????????????// 第四個參數:菜單項上顯示的內容
????????????menu.add(1,0,0,"菜單1");
????????????menu.add(1,1,1,"菜單2").setCheckable(true);?// 增加一個√選項
????????????
????????}
????????//?創建?R.id.txt2?的上下文菜單(多級)
????????else?if(v?==?(TextView)?this.findViewById(R.id.txt2)){
????????????
????????//?ContextMenu.addSubMenu("菜單名稱") - 用來添加子菜單。子菜單其實就是一個特殊的菜單
????????????SubMenu?sub1?=?menu.addSubMenu("父菜單1");
????????????sub1.setHeaderIcon(R.drawable.folder);
????????????sub1.add(0,?0,?0,?"菜單1");
????????????sub1.add(0,?1,?1,?"菜單2");
????????????sub1.setGroupCheckable(1,?true,?true);
????????????SubMenu?sub2?=?menu.addSubMenu("父菜單2");
????????????sub2.setIcon(R.drawable.text);
????????????sub2.add(1,?0,?0,?"菜單3");
????????????sub2.add(1,?1,?1,?"菜單4");
????????????sub2.setGroupCheckable(1,?true,?true);
????????}
????}
}
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:id="@+id/txt1"?
????android:layout_width="fill_parent"?
????android:layout_height="wrap_content"?
????android:text="請?長?按?觸?發(txt1)"
????/>
????<TextView?
????android:id="@+id/txt2"?
????android:layout_width="fill_parent"?
????android:layout_height="wrap_content"?
????android:text="請?長?按?觸?發(txt2)"
????/>
????
</LinearLayout>
strings.xml
<?xml?version="1.0"?encoding="utf-8"?><resources>
????<string?name="hello">Hello?World,?Test_Contextmenu!</string>
????<string?name="app_name">Test_Contextmenu</string>
????<string?name="titletest">這是一段測試文字</string>
</resources>
轉載于:https://blog.51cto.com/over140/582398
總結
以上是生活随笔為你收集整理的Android中文API(97)—— ContextMenu的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019年金融市场运行情况出炉了!投资不
- 下一篇: 51人品贷可以提前还款吗