• Android4.0 -- UI控件之 Menu 菜单的的使用(四)


    2.  PopupMenu 菜单的使用

    1) PopupMenu 介绍

      创建弹出菜单,它一般会在view的上边或者下边弹出菜单[具体看是否有空间],注意弹出菜单是api在11或者更高版本中使用
      如果你在XML文件中定义了你的菜单,你就可以通过以下步骤来显示弹出菜单了:
      1. 实例化一个 PopupMenu 通过它的构造方法,这样就可以把当前应用的 context 和 view 传给所定义的菜单了
      2. 使用 MenuInflater 来加载菜单资源,通过 PopupMenu.getMenu() 得到一个 Menu 对象,如果是在 API 14 或者更高级,你可以通过 PopupMenu.inflate() 来代替了。
      3. 调用 PopupMenu.show()。

    2) 程序实现

    1) 布局文件 activity_main.xml 只是定义一个按钮,这里就不再粘贴了。

    2) 菜单定义文件 目录:res/menu 下 main.xml

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item
            android:id="@+id/share"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="Share"/>
        <item
            android:id="@+id/edit"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="Edit"/>
        <item
            android:id="@+id/delete"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="Delete"/>
    
    </menu>

    3) 程序主要代码

    public class MainActivity extends Activity {
    
        private Button button;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initComponent();
            //这种就不需要长按事件
            button.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //当前这个v就是 button2控件
                    PopupMenu popupMenu = new PopupMenu(MainActivity.this, v);
                    popupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
                        
                        @Override
                        public boolean onMenuItemClick(MenuItem item) {
                            // TODO Auto-generated method stub
                            switch (item.getItemId()) {
                                case R.id.edit:
                                    Toast.makeText(MainActivity.this, "Edit", 3).show();
                                    break;
                                case R.id.share:
                                    Toast.makeText(MainActivity.this, "share", 3).show();
                                    break;
                                case R.id.delete:
                                    Toast.makeText(MainActivity.this, "delete", 3).show();
                                    break;
                            }
                            return false;
                        }
                    });
                    
                    MenuInflater inflater = popupMenu.getMenuInflater();
                    inflater.inflate(R.menu.main, popupMenu.getMenu());
                    popupMenu.show();
                }
            });
        }
    
        @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;
        }
        
        private void initComponent(){
            button = (Button)findViewById(R.id.button1);
        }
    
    }

    3) 执行结果

     详情参考:http://developer.android.com/guide/topics/ui/menus.html

  • 相关阅读:
    解压bz2包
    Linux获取客户端IP
    出现身份验证错误,要求的函数不受支持,远程计算机
    Ubuntu16.04.4 编译安装ssldump1.1
    windows远程桌面复制不了文件
    MySQL空间数据操作:GeomFromText()和astext()函数报错解决
    mysql中geometry类型的简单使用
    response header的Content-Disposition的inline的作用
    jooq的LocalDateTime转化成LocalDate
    java8 LocalDateTime时间格式化
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/3276656.html
Copyright © 2020-2023  润新知