使用PopupMenu创建弹出式菜单

   PopupMenu代表弹出式菜单,它会在指定组件上弹出PopupMenu,默认情况下,PopupMenu会显示在该组件的下方或上方。PopupMenu可增加多个菜单项,并可为菜单项增加子菜单。

   使用PopupMenu创建菜单的步骤非常简单,只要如下步骤即可。

  1. 调用new PopupMenu(Context context,View anchor)创建下拉菜单,anchor代表要激发该弹出菜单的组件。
  2. 调用MenuInflater的inflate()方法将菜单资源填充到PopupMenu中。
  3. 调用PopupMenu的show()方法显示弹出式菜单。

    下面的实例示范了使用PopupMenu的功能和用法。

     界面布局文件如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:onClick="onPopupButtonClick"
        android:text="单击我" />
</LinearLayout>

该实例的Activity的代入如下:

package org.crazyit.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.PopupMenu;
import android.widget.Toast;

public class PopupMenuTest extends Activity {
     
    PopupMenu popup=null;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.popup_menu_test);
    }

    public void onPopupButtonClick(View button)
    {
        //创建PopupMenu对象
        popup=new PopupMenu(this,button);
        //将R.menu.popup_menu菜单资源加载到popup菜单中
        getMenuInflater().inflate(R.menu.popup_menu,popup.getMenu());
        //为popup菜单的菜单项单击事件绑定事件监听器
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch(item.getItemId())
                {
                case R.id.exit:
                    //隐藏该对话框
                    popup.dismiss();
                    break;
                default:
                    //使用Toast显示用户单击的菜单项
                    Toast.makeText(PopupMenuTest.this, "您单击了【"+item.getTitle()+"】菜单项",Toast.LENGTH_SHORT).show();
                
                }
                // TODO Auto-generated method stub
                return false;
            }
            
        });
        popup.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.popup_menu_test, menu);
        return true;
    }

}

上面的程序中第一行粗体字代码创建了一个PopupMenu对象,第二行粗体字代码指定将该R.menu.popup_menu菜单资源文件填充到PopupMenu中,这样即可实现当用户单击界面按钮时弹出Popup菜单。

  运行上面程序将看到如下效果:

 

   

posted @ 2013-10-31 09:55  TealerProg  Views(7024)  Comments(1Edit  收藏  举报