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 ...
随机推荐
- 廖雪峰老师Python教程读后笔记
廖老师网站:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 花几天时间看了廖老师的 ...
- queue队列
1.作用:解耦,提高效率.队列就是一个容器,一个有顺序的容器. q.queue.Queue(maxsize=3): 生成一个队列的实例,并且最多存储3个元素 q.get(item,block=Ture ...
- Linux查看PCIe版本及速率
Linux查看PCIe版本及速率 PCIE有四种不同的规格,通过下图来了解下PCIE的其中2种规格 查看主板上的PCI插槽 # dmidecode | grep --color "PCI&q ...
- 【以前的空间】poj 2288 Islands and Bridges
一个不错的题解 : http://blog.csdn.net/accry/article/details/6607703 这是一道状态压缩.每个点有一个值,我们最后要求一个最值sum.sum由三部分组 ...
- Android Canvas 绘图
画布(Canvas)是图形编程中一个很普通的概念,通常由三个基本的绘图组件组成: Canvas 提供了绘图方法,可以向底层的位图绘制基本图形. Paint 也称为" ...
- AOJ.720 丢失的学妹
缺失的学妹 考察点 STL MAP Time Mem Len Lang 3.81s 39.1MB 0.68K G++ 题意分析 给出妹子学号的个数n,给出n个学号,和n-1个学号,求在n学号中那个没有 ...
- ExtJs在页面上window再调用Window的事件处理
今天在开发Ext的过程中遇到了一个恶心的问题,就是在ext.window页面,点击再次弹出window时,gridpanel中的store数据加载异常,不能正常被加载,会出现缓存,出现该问题,是因为w ...
- centos上tensorflow一键安装脚本
鉴于tensorflow在centos上安装相当麻烦,特地制作了一个脚本方便以后移植到其它机器上,脚本含有其它python常用包: #! /bin/bash sudo yum install -y ...
- 关于我之前写的修改Windows系统Dos下显示的用户名之再修改测试
最近看到蛮多网友反映,自己修改Dos下用户名后出现了很多的问题--今天抽了时间,再次修改测试... ================= 提前说明:我自己修改了很多次没发现任何问题,<为避免修改可 ...
- dbms_output.put与put_line
BEGIN DBMS_OUTPUT.ENABLE (buffer_size => NULL);--with no limit on the output. dbms_output.put('a' ...