效果图:

布局文件, 展示列表的容器

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/bgcolor">    <ListView        android:id="@+id/lv"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:divider="@color/White"        android:dividerHeight="1dp"        android:layout_marginTop="1dp">    </ListView></LinearLayout>

每一列的布局

<?xml version="1.0" encoding="utf-8"?><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="wrap_content"    android:background="@color/bgcolor"    >        <TextView            android:id="@+id/tvItem"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_below="@id/tvStars"            android:text="32宀?            android:layout_marginLeft="1dp"            android:layout_marginRight="1dp"            android:layout_marginBottom="1dp"            android:textColor="@color/bg_deep_color"            android:textSize="17sp"            android:paddingTop="5dp"            android:background="@color/White"        /></LinearLayout>

java 代码实现popup menu的类

public class PopMenu {    private ArrayList<String> itemList;    private Context context;    private PopupWindow popupWindow ;    private ListView mLv;         @SuppressWarnings("deprecation")    public PopMenu(Context context) {        this.context = context;        View view = LayoutInflater.from(context).inflate(R.layout.listview_popup_menu, null);        itemList = new ArrayList<String>();        //璁剧疆 listview        mLv = (ListView)view.findViewById(R.id.lv);                 mLv.setAdapter(new PopAdapter());        popupWindow = new PopupWindow(view, 200, LayoutParams.WRAP_CONTENT);        popupWindow = new PopupWindow(view, context.getResources().getDimensionPixelSize(R.dimen.popmenu_width), LayoutParams.WRAP_CONTENT);        popupWindow.setBackgroundDrawable(new BitmapDrawable());             }         //璁剧疆鑿滃崟椤圭偣鍑荤洃鍚櫒    public void setOnItemClickListener(android.widget.AdapterView.OnItemClickListener listener) {        mLv.setOnItemClickListener(listener);    }     //鎵归噺娣诲姞鑿滃崟椤?    public void addItems(String[] items) {        for (String s : items)            itemList.add(s);    }        public void addItems(ArrayList<String> ArrList) {        // TODO Auto-generated method stub        itemList.addAll(ArrList);    }     //鍗曚釜娣诲姞鑿滃崟椤?    public void addItem(String item) {        itemList.add(item);    }         public Object getItem(int position) {        return itemList.get(position);    }     //涓嬫媺寮?寮瑰嚭 pop鑿滃崟 parent     public void showAsDropDown(View parent) {        //淇濊瘉灏哄鏄牴鎹睆骞曞儚绱犲瘑搴︽潵鐨?        popupWindow.showAsDropDown(parent,2,0);        // 浣垮叾鑱氶泦        popupWindow.setFocusable(true);        // 璁剧疆鍏佽鍦ㄥ鐐瑰嚮娑堝け        popupWindow.setOutsideTouchable(true);        //鍒锋柊鐘舵€?        popupWindow.update();    }         //闅愯棌鑿滃崟    public void dismiss() {        popupWindow.dismiss();    }     // 閫傞厤鍣?    private final class PopAdapter extends BaseAdapter {         public int getCount() {            return itemList.size();        }                 public Object getItem(int position) {            return itemList.get(position);        }                 public long getItemId(int position) {            return position;        }                 public View getView(int position, View convertView, ViewGroup parent) {                         convertView = LayoutInflater.from(context).inflate(R.layout.list_item_popup_menu, null);            TextView groupItem = (TextView) convertView.findViewById(R.id.tvItem);//            TextView imgTV = (TextView) convertView.findViewById(R.id.imgTV);//            if (position == itemList.size() - 1) {//                imgTV.setVisibility(View.GONE);//            }            groupItem.setText(itemList.get(position));            return convertView;        }    }    

让popup menu在适当地方展示出来的方法

mHospitalPopMenu = new PopMenu(mContext);        mHospitalPopMenu.addItems(mHospitalArrList);        mHospitalPopMenu.setOnItemClickListener(new OnItemClickListener() {        @Override        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {               TextView tvItem = (TextView)view.findViewById(R.id.tvItem);               mTvHospital.setText(tvItem.getText());               mHospitalPopMenu.dismiss();               }        });
mHospitalArrList = new ArrayList<String>();String s[] = new String[]{"鍗庤タ鍖婚櫌","鎴愰兘鍐涘尯鍖婚櫌","鍥涘窛楠ㄧ鍖婚櫌"};        for (String s1: s){            mHospitalArrList.add(s1);        }
mCityPopMenu.showAsDropDown(mTvCity); //在mTvCity控件下show 弹出菜单

更多相关文章

  1. 阅读《Android(安卓)从入门到精通》(5)——文本框视图
  2. ProgressBar 颜色的设置
  3. Android(安卓)侧滑(双向滑动菜单)效果
  4. Android(安卓)Material Design控件之CardView
  5. Android(安卓)使用 TableLayout 布局拉伸宽度
  6. Android中自定义滑动条风格
  7. Android获取网络图片应用示例
  8. Android基本UI控件的介绍及使用
  9. android socket客户端app

随机推荐

  1. 天天记录 - 双休安装双系统并搭建环境的
  2. 框架和流程——OkHttp 源码详解(一)
  3. Android(安卓)7.0正式版发布时间曝光!等到
  4. Android布局之线性布局
  5. Android应用开发以及设计思想深度剖析(1)
  6. Android(安卓)热修复其实很简单
  7. android面试题,各大企业常见的android面
  8. Android开发——实现子线程更新UI
  9. 仅仅是个人记录:Android(安卓)的机型适配:
  10. 使用adb logcat命令显示Android设备上的L