Android Popup Menu的使用方法

来源:互联网 发布:淘宝开店的费用明细 编辑:程序博客网 时间:2024/05/17 05:14

1. 概述

弹出式菜单是和某个View关联在一起的,Android会根据这个View的位置,自动确定弹出式菜单的显示位置。

创建弹出式菜单的步骤如下:

  • PopupMenu popupMenu = new PopupMenu(context, view);
  • Menu menu = popupMenu.getMenu();
  • popupMenu.getMenuInflater().inflate(resId, menu);
  • popupMenu.setOnMenuItemClickListener(xxxxx);
  • popupMenu.show();

2. 示例

2.1 Java代码

package com.example.hellopopupmenu;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.PopupMenu;import android.widget.PopupMenu.OnMenuItemClickListener;import android.widget.Toast;public class MainActivity extends Activity {private Button button = null;private Toast toast = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.hello_popup_menu_main);        button = (Button) this.findViewById(R.id.button);        button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {showPopupMenu();}                });            }private void showPopupMenu() {PopupMenu popupMenu = new PopupMenu(this, button);Menu menu = popupMenu.getMenu();MenuInflater inflater = popupMenu.getMenuInflater();inflater.inflate(R.menu.popup_menu, menu);popupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {@Overridepublic boolean onMenuItemClick(MenuItem item) {switch (item.getItemId()) {case R.id.item01:showToast("item01");return true;case R.id.item02:showToast("item02");return true;case R.id.item03_01:showToast("item03_01");return true;case R.id.item03_02:showToast("item03_02");return true;default:return false;}}});popupMenu.show();}private void showToast(String string) {if (toast == null) {toast = Toast.makeText(this, "", Toast.LENGTH_SHORT);}toast.setText(string);toast.show();}}

2.2 布局文件

<?xml version="1.0" encoding="utf-8"?><!-- hello_popup_menu_main.xml --><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >        <Button        android:id="@+id/button"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="@string/button_text"/></LinearLayout>


2.3 菜单资源

<?xml version="1.0" encoding="utf-8"?><!-- popup_menu.xml --><menu xmlns:android="http://schemas.android.com/apk/res/android" >    <item        android:id="@+id/item01"        android:title="@string/item01"/>        <item         android:id="@+id/item02"        android:title="@string/item02"/>    <item        android:id="@+id/item03"        android:title="@string/item03">            <menu><item        android:id="@+id/item03_01"        android:title="@string/item03_01"/>    <item        android:id="@+id/item03_02"        android:title="@string/item03_02"/></menu></item></menu>


2.4 字符串资源

<string name="button_text">Show a PopupMenu</string><string name="item01">item01</string><string name="item02">item02</string><string name="item03">item03</string><string name="item03_01">item03_01</string><string name="item03_02">item03_02</string>



0 0