zoukankan      html  css  js  c++  java
  • ContextMenu菜单的介绍

      ContextMenu是支持长点击,同长用在ListView,GridView等控件中,实现一个ContextMenu菜单通常需要以下几步:

      1,向某个View注册上下文菜单,通过调用 registerForContextMenu() 如, registerForContextMenu(listView);

      2,在Activity或者在Fragment中实现 onCreateContextMenu()方法,如,

      

    1 public void onCreateContextMenu(ContextMenu menu, View v,
    2             ContextMenuInfo menuInfo) {
    3         // TODO 自动生成的方法存根
    4        
    5         super.onCreateContextMenu(menu, v, menuInfo);
    6         MenuInflater inflater = getMenuInflater();  //Menuinflater实例允许加载上下文菜单,
    7         inflater.inflate(R.menu.main, menu);
    8     }

      3,实现onContextItemSelected().方法,当用户选中一个菜单项时,系统会自动调用这个函数。如,

     1 //响应上下文菜单的操作
     2     @Override
     3     public boolean onContextItemSelected(MenuItem item) {
     4         // TODO Auto-generated method stub
     5         switch (item.getItemId()) {
     6         case R.id.delete:
     7             Toast.makeText(MainActivity.this, "Delete", 1).show();
     8             break;
     9         case R.id.share:
    10             Toast.makeText(MainActivity.this, "Share", 1).show();
    11             break;
    12         case R.id.edit:
    13             Toast.makeText(MainActivity.this, "Edit", 1).show();
    14             break;
    15         }
    16         return super.onContextItemSelected(item);
    17     }

      下面给出整个源代码:

      在activity_main.xml文件中:

     1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent" >
     5 
     6     <ListView
     7         android:id="@+id/listView1"
     8         android:layout_width="match_parent"
     9         android:layout_height="wrap_content"
    10         android:layout_alignParentLeft="true"
    11         android:layout_alignParentTop="true" >
    12     </ListView>
    13 
    14 </RelativeLayout>

    在main.xml文件中:

     1 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
     2 
     3     <item
     4         android:id="@+id/edit"
     5         android:orderInCategory="100"
     6         android:showAsAction="never"
     7         android:title="Edit"/>
     8     <item
     9         android:id="@+id/share"
    10         android:orderInCategory="100"
    11         android:showAsAction="never"
    12         android:title="Share"/>
    13     <item
    14         android:id="@+id/delete"
    15         android:orderInCategory="100"
    16         android:showAsAction="never"
    17         android:title="Delete"/>
    18 
    19 </menu>

    在MainActivity.java文件中:

    public class MainActivity extends Activity {
    
        private List<Object> list;
        private ListView listView = null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            list = getData();
            ArrayAdapter< Object> adapter = 
                    new ArrayAdapter<Object>(MainActivity.this, android.R.layout.simple_list_item_1, list);
            
            listView = (ListView) findViewById(R.id.listView);
            listView.setAdapter(adapter);
            registerForContextMenu(listView);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        List<Object> getData(){
            List<Object> list = new ArrayList<Object>();
            for(int i = 1; i <= 7;i++){
                list.add("jack" + i);
            }
            return list;
        }
        
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            // TODO 自动生成的方法存根
            
            super.onCreateContextMenu(menu, v, menuInfo);
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.main, menu);
        }
    }

    运行结果:

     

      

    ---恢复内容结束---

  • 相关阅读:
    ACE 资源
    为什么在VC6中TRACE不能输出信息?
    实例源码Android智能家居系统
    项目源码Android音乐播放器
    实例源码Android捕鱼达人经典游戏
    精品教程NDK环境搭建(1)CYGWIN的安装
    实例源码Android人脸识别技术(眼睛位置)
    精品教程NDK基础例子,编译.SO文件
    项目源码Android高清壁纸应用
    精品教程Android中通过NDK使用OpenCV库
  • 原文地址:https://www.cnblogs.com/SoulCode/p/5436469.html
Copyright © 2011-2022 走看看