彈出式選單(下拉選單)實現——PopupMenu
阿新 • • 發佈:2019-01-25
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選單。
使用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選單。