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

posted @ 2013-08-22 23:40  似水流云  阅读(390)  评论(0编辑  收藏  举报