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 ...
随机推荐
- main方法为什么是静态的
main函数其实也是所在类的一个方法,就比如一个类是test,那么该类的main其实就是test.main(String[] args),众所周知如果一个方法不是静态的,则要先实例化该类,比如要这样 ...
- AD高级培训PPT总结
AD高级培训PPT总结 https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=44905&highlight= 说明: ...
- CentOS ACL
ACL:访问控制列表(Access Control List). 一般来说权限是针对某一类用户设置的.例如:一个文件只有拥有者.组.其他用户三种设置方式,如果希望对某个指定的用户进行单独的权限控制,就 ...
- 2018牛客多校第五场 E.room
题意: 一共有n个宿舍,每个宿舍有4个人.给出第一年的人员分布和第二年的人员分布,问至少有多少人需要移动. 题解: 对于第一年的每个宿舍,向今年的每种组合连边.流量为1,费用为(4 - 组合中已在该宿 ...
- BZOJ2752:[HAOI2012]高速公路——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2752 https://www.luogu.org/problemnew/show/P2221#sub ...
- ExtJs在页面上window再调用Window的事件处理
今天在开发Ext的过程中遇到了一个恶心的问题,就是在ext.window页面,点击再次弹出window时,gridpanel中的store数据加载异常,不能正常被加载,会出现缓存,出现该问题,是因为w ...
- HDU 3586 树形dp
Information Disturbing Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/ ...
- C# 把类实例保存到文件里(类的序列化和反序列化)
有时候我们希望把类的实例保存下来,以便以后的时候用.一个直观的方法就是StreamWriter把类写成一行,用\t分隔开每个属性,然后用StreamReader读出来. 但是这样太麻烦,代码行数较多, ...
- 用好printf和scanf
转载自:http://hi.baidu.com/wuxicn/item/f648fe1970f86917e3f98682 在C中,printf系列函数(fprintf, sprintf...)和sca ...
- 自己做的jquery的autocomplete的一个例子
转载自:http://dada-fangfang.iteye.com/blog/695464 首先下载jquery.js和jquery.autocomplete.js 注意:jquery.js 要放在 ...