用PopupWindow做下拉框
最近在做下拉框,本来想用spinner,可是spinner达不到项目要求,跟同学同事问了一圈,都在用popwindow,
网上看了一下,popwindow挺简单的,可定制性挺强的,符合我的要求,所以,借鉴网上看的代码,自己撸了一
遍。写篇博客以防忘记。
首先,先写个自定义布局,代码如下
- <?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="110dp"
- android:layout_height="wrap_content">
- <LinearLayout
- android:layout_width="100dp"
- android:layout_height="wrap_content"
- android:background="@drawable/bg_circle_drop_down_qr_code"
- android:orientation="vertical"
- android:layout_marginRight="@dimen/padding_10"
- android:paddingBottom="0dp"
- android:paddingLeft="@dimen/padding_5"
- android:paddingRight="@dimen/padding_5"
- android:paddingTop="@dimen/padding_5">
- <LinearLayout
- android:id="@+id/lin_scan_qr_code"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:gravity="center"
- android:orientation="horizontal"
- android:paddingBottom="@dimen/padding_5"
- android:paddingTop="@dimen/padding_5">
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/ic_circle_scan_qr_code" />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/padding_10"
- android:gravity="center"
- android:text="扫一扫"
- android:textColor="@color/color_white"
- android:textSize="@dimen/text_16" />
- </LinearLayout>
- <View
- android:layout_width="wrap_content"
- android:layout_height="1px"
- android:layout_marginLeft="@dimen/padding_3"
- android:layout_marginRight="@dimen/padding_3"
- android:background="@color/color_white" />
- <LinearLayout
- android:id="@+id/lin_my_qr_code"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:gravity="center"
- android:orientation="horizontal"
- android:paddingBottom="@dimen/padding_5"
- android:paddingTop="@dimen/padding_5">
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/ic_circle_my_qr_code" />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/padding_10"
- android:gravity="center"
- android:text="二维码"
- android:textColor="@color/color_white"
- android:textSize="@dimen/text_16" />
- </LinearLayout>
- </LinearLayout>
- </LinearLayout>
第二步,在代码中定义popwindow样式,绑定点击事件,代码如下:
- // // 获取自定义布局文件pop.xml的视图
- View customView = getActivity().getLayoutInflater().inflate(R.layout.lay_circle_pop_drop_down_qr_code,
- null, false);
- // 创建PopupWindow实例,200,150分别是宽度和高度
- mQrCodePopWindow = new PopupWindow(customView, CommonUtil.dipToPx(getContext(),110), ViewGroup.LayoutParams.WRAP_CONTENT,true);
- // 设置动画效果 [R.style.AnimationFade 是自己事先定义好的]
- // popupwindow.setAnimationStyle(R.style.AnimationFade);
- // popupwindow.setTouchable(true);
- // popupwindow.setOutsideTouchable(true);
- mQrCodePopWindow.setBackgroundDrawable(new BitmapDrawable());
- customView.findViewById(R.id.lin_scan_qr_code).setOnClickListener(v -> {
- ToastUtil.show(getContext(),"扫一扫");
- dismissQrCodePopWindow();
- });
- customView.findViewById(R.id.lin_my_qr_code).setOnClickListener(v -> ToastUtil.show(getContext(),"二维码"));
注意,代码中的true为setFoucusable,如要点击空白处隐藏popwindow的话,setFocusable(true)和setBackground()两者必不可少(亲测)。
最后,为空间添加点击事件,控制下拉框的显示隐藏,代码如下:
- @OnClick(R.id.lin_top_right)
- public void onClick(View v) {
- if (mQrCodePopWindow != null&& mQrCodePopWindow.isShowing()) {
- mQrCodePopWindow.dismiss();
- } else {
- initQrCodePopWindow();
- mQrCodePopWindow.showAsDropDown(v);
- }
- }
(由于暂时没有发现好的动画效果,所以没有添加动画,如果大家有发现好的动画,还请告知一二,在此谢过)
效果图:
用PopupWindow做下拉框的更多相关文章
- 用PopWindow做下拉框
最近在做下拉框,本来想用spinner,可是spinner达不到项目要求,跟同学同事问了一圈,都在用popwindow, 网上看了一下,popwindow挺简单的,可定制性挺强的,符合我的要求,所以, ...
- C# 生成月份及天选择列表,方便做下拉框联动
月份及天选择列表,很方便做下拉框联动 /// <summary> /// 获取月份选择列表(根据当前语言环境显示月份名称) /// </summary> private IEn ...
- GridControl控件绑定RepositoryItemImageComboBox 作为下拉框使用
如果,时间长时了,已前做过的东西,都记不得了,所以记录一下. 废话不多说. 1.拖出gridview控件,然后将字段绑定上去 2.将要做下拉框的控件加入RepositoryItemImageCombo ...
- devpress GridControl控件绑定RepositoryItemImageComboBox 作为下拉框使用 zt
1.拖出gridview控件,然后将字段绑定上去 2.将要做下拉框的控件加入RepositoryItemImageComboBox控件 3.绑定数据 ; i < ; i++) { //如果取值时 ...
- 月薪10K必备--C#下拉框联动
下拉框联动 很多网站上都用到下拉框联动,就是第一个下拉框没有选择任何项,第二个下拉框就没有选项.这样的做法更加谨慎,更加紧密. 下面我就教大家怎么做下拉框联动: 首先在窗 ...
- Ext 下拉框联动第一次显示不正常的问题
做下拉框联动,异步加载数据,第一次显示时数据不准确,不要在combo_2的下拉框直接绑定store,在combo_1的改变事件里调用下面的方法 function GetAllCustomerBrand ...
- 下拉框选择blur与click冲突问题
缘由:今天在做下拉框选择时,遇到click和blur冲突问题:具体现象如下 1.intput框获取焦点(focus事件)时显示隐藏的下拉框,失去焦点(blur事件)则隐藏下拉框 2.点击选择(clic ...
- easyui datagrid combobox下拉框获取数据问题
最近在使用easyui的datagrid,在可编辑表格中添加一个下拉框,查了下API,可以设置type : 'combobox',来做下拉框,这下拉框是有了,可是这后台数据怎么传过来呢,通过查API可 ...
- PHP.TP框架下商品项目的优化3-php封装下拉框函数
php封装下拉框函数 因为在项目中会经常使用到下拉框,所以根据一个表中的数据制作下拉框函数,以便调用 //使用一个表的数据做下拉框函数 function buildSelect($tableName, ...
随机推荐
- public static void main(String[] args)说明
/*public static void main(String[] args) 主函数特殊之处:1,格式是固定的.2,被jvm所识别和调用. public:因为权限必须是最大的.static:不需要 ...
- 状态机中的RAM注意的问题--减少扇出的办法
可能我不会抓紧时间,所以做事老是很慢.最近在整维特比译码过程深感自己有这样的毛病. 每天会有一点进展,但是却是一天的时间,感觉别人都做起事情来很快.可能这个东西有点难,做 不做得出来都不要紧,但我的想 ...
- VHDL数据类型
VHDL表示16进制 如 a : std_logic_vector(7 downto 0) 把0x55赋给a a <= x"55"; b表示二进制 b“1011_1111” ...
- ROS教程
Learning ROS 学习ROS Depending on your learning style and preferences, you can take two approaches to ...
- 20145234黄斐《java程序设计》第六周
教材学习内容总结 第十章:输入与输出 InputStream与OutputStream 流(Stream)是对「输入输出」的抽象,注意「输入输出」是相对程序而言的 InputStream与Output ...
- AOT和JIT以及混合编译的区别、优劣
AOT,JIT是什么? JIT,即Just-in-time,动态(即时)编译,边运行边编译: AOT,Ahead Of Time,指运行前编译,是两种程序的编译方式 区别 这两种编译方式的主要区别在于 ...
- 图片转化为pdf(转)
方法1: 利用Adobe公司的Adobe Acrobat Professional进行转化.注意,一定是Professional版本的,Reader版本没有这个功能. 首先安装Adobe Acrob ...
- jpg/png格式图片转eps格式的方法--latex自带命令bmeps
bmeps -h 命令查看bmeps的帮助信息 bmeps -c example.jpg example.eps
- 获得硬盘的ID序列号(XE10.1+WIN8.1)
疯狂delphi DelphiXE公开课群:100162924.58593121 朱建强QQ:513187410 获得硬盘的ID序列号(XE10.1+WIN8.1) 相关资料: https://zhi ...
- Django开发Web监控工具-pyDash
今天发现了一个比较有意思的监控工具,是基于Django开发的,开发大牛已经开放了源代码,向大牛致敬,同时研究研究,目前感觉这个监控比较直观,可以针对个人服务器使用,同时涉及的环境比较简单,部署起来 ...