• 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);
        }
    }

    运行结果:

     

      

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

  • 相关阅读:
    科学计算——笔记
    Python_scrapyRedis零散
    Python博文_爬虫工程师是干什么的
    [单选题]怎样打开或创建一个文件?
    [问答题] 写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):
    [单选题]<?php$age =18;$age?$age+10:$age+20;echo $age;?>
    [单选题]有关PHP面向对象的说法,不对的是:
    [单选题]要循环操作非顺序索引的数组时,可以用下面哪个函数来读取数组当面元素的索引值?
    [单选题]PHP中定义常量的方法是:
    [单选题]stdClass的一个对象如何设置成员value的值?
  • 原文地址:https://www.cnblogs.com/SoulCode/p/5436469.html
Copyright © 2020-2023  润新知