1.概述
本文將介紹如何利用PopupWindow實現點擊屏幕頂部工具欄按鈕彈出下拉菜單的功能。先上圖:
2.代碼實現
首先是activity_main.xml布局文件:
其中,rl_topbar定義了頂部工具欄,裡面包含左中右三個TextView,點擊這三個控件會彈出相應的下拉菜單。
接下來是MainActivity.java文件:
package com.example.dropdownmenu;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.ColorDrawable;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class MainActivity extends Activity {
// 工具欄
private RelativeLayout rlTopBar;
// 左中右三個控件(工具欄裡)
private TextView tvLeft;
private TextView tvRight;
private TextView tvMiddle;
// 左中右三個彈出窗口
private PopupWindow popLeft;
private PopupWindow popRight;
private PopupWindow popMiddle;
// 左中右三個layout
private View layoutLeft;
private View layoutRight;
private View layoutMiddle;
// 左中右三個ListView控件(彈出窗口裡)
private ListView menulistLeft;
private ListView menulistRight;
private ListView menulistMiddle;
// 菜單數據項
private List
以上代碼有詳細的注釋,這裡就不做過多解釋啦!原理比較簡單,點擊工具欄上的TextView會彈出PopupWindow,裡面包含ListView,顯示所有菜單項。
彈出的菜單窗口(PopupWindow)布局文件為pop_menulist.xml,就一個ListView
而每個菜單項對應的布局文件為pop_menuitem.xml,只包含一個TextView
其他還有一些屬性資源相關的文件,不是很重要,大家可以下載工程源碼進行研究!