彈出式菜單(下拉菜單)實現——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菜單。

  運行上面程序將看到如下效果:

 

【轉】http://www.cnblogs.com/wolipengbo/p/3398603.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM