效果图:

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

<?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 弹出菜单

popup menu案例,无说明只代码的更多相关文章

  1. 实际案例:在现有代码中通过async/await实现并行

    一项新技术或者一个新特性,只有你用它解决实际问题后,才能真正体会到它的魅力,真正理解它.也期待大家能够多分享解一些解决实际问题的内容. 在我们遭遇“黑色30秒”问题的过程中,切身体会到了异步的巨大作用 ...

  2. 如何用java写出无副作用的代码

    搞java的同学们可能对无副作用这个概念比较陌生,这是函数式编程中的一个概念,无副作用的意思就是: 一个函数(java里是方法)的多次调用中,只要输入参数的值相同,输出结果的值也必然相同,并且在这个函 ...

  3. Android学习总结——Popup menu:弹出式菜单

    PopupMenu,弹出菜单,一个模态形式展示的弹出风格的菜单,绑在在某个View上,一般出现在被绑定的View的下方(如果下方有空间). 注意:弹出菜单是在API 11和更高版本上才有效的. 核心步 ...

  4. Toolbar 和 CollapsingToolbarLayout一起使用时menu item无点击反应解决办法

    昨天一直在琢磨为什么Toolbar和CollapsingToolbarLayout一起使用时menu item无点击放应的原因,后来在stackoverflow上一条回答,说可能是Toolbar的背景 ...

  5. How to easily create popup menu for DevExpress treelist z

    http://www.itjungles.com/how-to-easily-create-popup-menu-for-devexpress-treelist.html Adding popup m ...

  6. Android -- Options Menu,Context Menu,Popup Menu

    Options Menu                                                                           创建选项菜单的步骤: 1. ...

  7. 一只代码小白git托管路上的二三事

    [经验]一只代码小白git托管路上的二三事 写在前面的话 寒假的时候,娄老师给我们布置了代码托管的作业,并要求把托管地址发给学委.因假期的时候没有带电脑回家,所以只是在手机上草草注册了,也稀里糊涂就将 ...

  8. [WEB安全]无回显代码执行【转载】

    原作者:AdminTony 原文链接:http://www.admintony.com/无回显代码执行利用方法.html 在Root-Me上有一道代码执行的题目,其链接为题目链接 0x01 简介 打开 ...

  9. C# WPF抽屉效果实现(C# WPF Material Design UI: Navigation Drawer & PopUp Menu)

    时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...

随机推荐

  1. main方法为什么是静态的

    main函数其实也是所在类的一个方法,就比如一个类是test,那么该类的main其实就是test.main(String[] args),众所周知如果一个方法不是静态的,则要先实例化该类,比如要这样  ...

  2. AD高级培训PPT总结

    AD高级培训PPT总结 https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=44905&highlight=     说明: ...

  3. CentOS ACL

    ACL:访问控制列表(Access Control List). 一般来说权限是针对某一类用户设置的.例如:一个文件只有拥有者.组.其他用户三种设置方式,如果希望对某个指定的用户进行单独的权限控制,就 ...

  4. 2018牛客多校第五场 E.room

    题意: 一共有n个宿舍,每个宿舍有4个人.给出第一年的人员分布和第二年的人员分布,问至少有多少人需要移动. 题解: 对于第一年的每个宿舍,向今年的每种组合连边.流量为1,费用为(4 - 组合中已在该宿 ...

  5. BZOJ2752:[HAOI2012]高速公路——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2752 https://www.luogu.org/problemnew/show/P2221#sub ...

  6. ExtJs在页面上window再调用Window的事件处理

    今天在开发Ext的过程中遇到了一个恶心的问题,就是在ext.window页面,点击再次弹出window时,gridpanel中的store数据加载异常,不能正常被加载,会出现缓存,出现该问题,是因为w ...

  7. HDU 3586 树形dp

    Information Disturbing Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/ ...

  8. C# 把类实例保存到文件里(类的序列化和反序列化)

    有时候我们希望把类的实例保存下来,以便以后的时候用.一个直观的方法就是StreamWriter把类写成一行,用\t分隔开每个属性,然后用StreamReader读出来. 但是这样太麻烦,代码行数较多, ...

  9. 用好printf和scanf

    转载自:http://hi.baidu.com/wuxicn/item/f648fe1970f86917e3f98682 在C中,printf系列函数(fprintf, sprintf...)和sca ...

  10. 自己做的jquery的autocomplete的一个例子

    转载自:http://dada-fangfang.iteye.com/blog/695464 首先下载jquery.js和jquery.autocomplete.js 注意:jquery.js 要放在 ...