zoukankan      html  css  js  c++  java
  • Android 的上下文菜单: Context Menu,registerForContextMenu(getListView())

    概述:

    Android 的上下文菜单类似于 PC 上的右键菜单。当为一个视图注册了上下文菜单之后,长按(2 秒左右)这个视图对象就会弹出一个浮动菜单,即上下文菜单。任何视图都可以注册上下文菜单,不过,最常见的是用于列表视图ListView的item。

    注意:Android 的上下文菜单不支持图标或快捷键。

    创建一个上下文菜单的步骤:

    1. 覆盖 Activity 的 onCreateContenxtMenu() 方法,调用 Menu 的 add 方法添加菜单项(MenuItem)。

    2. 覆盖 Activity 的 onContextItemSelected() 方法,响应上下文菜单菜单项的单击事件。

    3. 调用 registerForContextMenu() 方法,为视图注册上下文菜单。

    示例:

    MainActivity.java 文件:

    
    
    1. //file name: MainActivity.java  
    2. package hi.braincol.local.contextMenu;  
    3. import android.app.ListActivity;  
    4. import android.os.Bundle;  
    5. import android.view.ContextMenu;  
    6. import android.view.Menu;  
    7. import android.view.MenuItem;  
    8. import android.view.ContextMenu.ContextMenuInfo;  
    9. import android.view.View;  
    10. import android.widget.AdapterView.AdapterContextMenuInfo;  
    11. import android.widget.ArrayAdapter;  
    12. import android.util.Log;  
    13. public class MainActivity extends ListActivity {  
    14.       
    15.     private static final int ITEM1 = Menu.FIRST;  
    16.     private static final int ITEM2 = Menu.FIRST+1;  
    17.     private static final int ITEM3 = Menu.FIRST+2;  
    18.       
    19.     /** Called when the activity is first created. */ 
    20.     @Override 
    21.     public void onCreate(Bundle savedInstanceState) {  
    22.         super.onCreate(savedInstanceState);     
    23.         showListView();  
    24.           
    25.         //为 ListView 的所有 item 注册 ContextMenu  
    26.         registerForContextMenu(getListView());  
    27.         //这里的registerForContextMenu()也可以用下面的语句替代  
    28.         //getListView().setOnCreateContextMenuListener(this);  
    29.     }  
    30.       
    31.     private void showListView(){  
    32.         String[] mString = new String[]{  
    33.                 "路飞-Monkey D Luffy",   
    34.                 "奈美-Nami",   
    35.                 "卓洛-Zoro",  
    36.                 "山治-Sanji",   
    37.                 "尼可·罗宾-Ms. All Sunday",   
    38.                 "乌索普-usoppu",   
    39.                 "托尼托尼·乔巴-Tony Tony Chopper",  
    40.         };  
    41.         ArrayAdapter<String> mla = new ArrayAdapter<String>(MainActivity.this,   
    42.                 R.layout.main, mString);  
    43.         MainActivity.this.setListAdapter(mla);        
    44.     }  
    45.       
    46.     //上下文菜单,本例会通过长按条目激活上下文菜单  
    47.     @Override 
    48.     public void onCreateContextMenu(ContextMenu menu, View view,   
    49.             ContextMenuInfo menuInfo) {  
    50.         menu.setHeaderTitle("人物简介");  
    51.         //添加菜单项  
    52.         menu.add(0, ITEM1, 0, "特长");  
    53.         menu.add(0, ITEM2, 0, "战斗力");  
    54.         menu.add(0, ITEM3, 0, "经典语录");  
    55.     }  
    56.       
    57.     //菜单单击响应  
    58.     @Override 
    59.     public boolean onContextItemSelected(MenuItem item){  
    60.         //获取当前被选择的菜单项的信息  
    61.         //AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();  
    62.         //Log.i("braincol",String.valueOf(info.id));          
    63.         switch(item.getItemId()){  
    64.         case ITEM1:  
    65.             //在这里添加处理代码  
    66.               
    67.             break;  
    68.         case ITEM2:  
    69.             //在这里添加处理代码  
    70.               
    71.             break;      
    72.         case ITEM3:  
    73.             //在这里添加处理代码  
    74.               
    75.             break;  
    76.         }  
    77.         return true;  
    78.     }  
    79.       
    80. }  

    main.xml 布局文件:

    1. <?xml version="1.0" encoding="utf-8"?> 
    2. <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    3.     android:id="@+id/myTextView" 
    4.     android:textSize="20sp" 
    5.     android:layout_width="fill_parent" 
    6.     android:layout_height="fill_parent" 
    7.     android:text="@string/hello" 
    8.     />  

      

    运行结果:

    ContextMenu  menu

  • 相关阅读:
    POJ 2352 &amp;&amp; HDU 1541 Stars (树状数组)
    SSH三大框架的工作原理及流程
    稀疏表示
    Linux程序设计学习笔记----多线程编程线程同步机制之相互排斥量(锁)与读写锁
    [面经] 南京SAP面试(上)
    JAVA数组的定义及用法
    花指令
    计算机认证考试种类
    《C语言编写 学生成绩管理系统》
    spice for openstack
  • 原文地址:https://www.cnblogs.com/hanfeihanfei/p/5392658.html
Copyright © 2011-2022 走看看