popup menu案例,无说明只代码
效果图:

布局文件, 展示列表的容器
<?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案例,无说明只代码的更多相关文章
- 实际案例:在现有代码中通过async/await实现并行
一项新技术或者一个新特性,只有你用它解决实际问题后,才能真正体会到它的魅力,真正理解它.也期待大家能够多分享解一些解决实际问题的内容. 在我们遭遇“黑色30秒”问题的过程中,切身体会到了异步的巨大作用 ...
- 如何用java写出无副作用的代码
搞java的同学们可能对无副作用这个概念比较陌生,这是函数式编程中的一个概念,无副作用的意思就是: 一个函数(java里是方法)的多次调用中,只要输入参数的值相同,输出结果的值也必然相同,并且在这个函 ...
- Android学习总结——Popup menu:弹出式菜单
PopupMenu,弹出菜单,一个模态形式展示的弹出风格的菜单,绑在在某个View上,一般出现在被绑定的View的下方(如果下方有空间). 注意:弹出菜单是在API 11和更高版本上才有效的. 核心步 ...
- Toolbar 和 CollapsingToolbarLayout一起使用时menu item无点击反应解决办法
昨天一直在琢磨为什么Toolbar和CollapsingToolbarLayout一起使用时menu item无点击放应的原因,后来在stackoverflow上一条回答,说可能是Toolbar的背景 ...
- 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 ...
- Android -- Options Menu,Context Menu,Popup Menu
Options Menu 创建选项菜单的步骤: 1. ...
- 一只代码小白git托管路上的二三事
[经验]一只代码小白git托管路上的二三事 写在前面的话 寒假的时候,娄老师给我们布置了代码托管的作业,并要求把托管地址发给学委.因假期的时候没有带电脑回家,所以只是在手机上草草注册了,也稀里糊涂就将 ...
- [WEB安全]无回显代码执行【转载】
原作者:AdminTony 原文链接:http://www.admintony.com/无回显代码执行利用方法.html 在Root-Me上有一道代码执行的题目,其链接为题目链接 0x01 简介 打开 ...
- C# WPF抽屉效果实现(C# WPF Material Design UI: Navigation Drawer & PopUp Menu)
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...
随机推荐
- P2845 [USACO15DEC]Switching on the Lights 开关灯
题目背景 来源:usaco-2015-dec Farm John 最近新建了一批巨大的牛棚.这些牛棚构成了一个N*N的矩形网络.(1<n<100) 然而bessie十分怕黑,他想计算可以把 ...
- [BZOJ5303] [HAOI2018] 反色游戏
题目链接 LOJ:https://loj.ac/problem/2524 BZOJ:https://lydsy.com/JudgeOnline/problem.php?id=5303 洛谷:https ...
- bzoj 2140: 稳定婚姻 (二分图)
//========================== 蒟蒻Macaulish:http://www.cnblogs.com/Macaulish/ 转载要声明! //=============== ...
- BZOJ2427:[HAOI2010]软件安装——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=2427 https://www.luogu.org/problemnew/show/P2515 现在 ...
- [bzoj] 2657 ZJOI2012 旅游 || bfs
原题 题意: 一个多边形,三角剖分,求一条对角线最多能经过多少三角形 题解: 因为不涉及坐标之类的,所以根几何肯定一点关系都没有. 我们会发现,对于有共边的两个三角形,可以被同一条线穿过,而这就相当于 ...
- 算法学习 拓扑排序(TopSort)
拓扑排序 一.基本概念 在一个有向无环图(Directed Acyclic Graph, DAG)中,规定< u,v > 表示一条由u指向v的的有向边.要求对所有的节点排序,使得每一条有向 ...
- [BZOJ1106/POI2007]Tet立方体大作战
Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n个 ...
- run (牛客多校第二场)计数DP
链接:https://www.nowcoder.com/acm/contest/140/A来源:牛客网 题目描述 White Cloud is exercising in the playground ...
- bzoj 1100 [POI2007]对称轴osi manacher
[POI2007]对称轴osi Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 771 Solved: 307[Submit][Status][Dis ...
- jQuery无法获取隐藏元素(display:none)宽度(width)和高度(height)的新解决方案
用jQuery写一个通过点击左右图标来翻阅图片的小插件,写好后测试可以正常运行,但是放到Tab中后发现只有第一个Tab中的代码能够正常运行,其它全部罢工了. 用Chrome自带的开发工具一查,发现罢工 ...