PopupMenu代表彈出式菜單,它會在指定組件上彈出PopupMenu,默認情況下,PopupMenu會顯示在該組件的下方或上方。PopupMenu可增加多個菜單項,並可為菜單項增加子菜單。
使用PopupMenu創建菜單的步驟非常簡單,只要如下步驟即可。
- 調用new PopupMenu(Context context,View anchor)創建下拉菜單,anchor代表要激發該彈出菜單的組件。
- 調用MenuInflater的inflate()方法將菜單資源填充到PopupMenu中。
- 調用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菜單。
運行上面程序將看到如下效果: