收拾PopupWindows

PopupWindows多坑,不赘述了,无意中发现一个专讲这个的博客http://www.cnblogs.com/popfisher/p/5944054.html

先讲讲我遇到的需求------条件选择,并实现选择按钮顶部悬浮效果、列表可滑动,实现1、2、3级列表。

思来想去摒弃了选择按钮和listview封装在一起的那种,列表改用popupwindows实现。(不要问我为啥,因为技术有限,只想到了pop实现:炫富并且滑动不被外层srcrollview抵消)

悬浮我用的CoordinatorLayout +NestedScrollView +AppBarLayout

多级条件选择: ExpandMenuView条件筛选

SingleListFilterView 1级列表

ThereListFilterView 2级列表

DoubleListFilterView 3级列表

Popupwindow –封装在ExpandMenuView,用来显示列表



下面讲讲我遇到的问题:

1.appBarLayout.setExpanded(false);实现点击筛选按钮的时候,将ExpandMenuView悬浮起来,这个时候Popupwindow却因为提前获取了焦点,怎么也无法显示在ExpandMenuView下方。

解决办法:因为Popupwindow注定要显示在ExpandMenuView下方,并且ExpandMenuView注定要在顶部显示,这是我的需求。我弄了一个textview始终显示在ExpandMenuView要悬浮的位置。改Popupwindow不再追随ExpandMenuView的脚步显示,而是追随textview的脚步显示,最终实现了想要的效果。

2.我想要Popupwindow下面变成遮罩效果,而不要盖住上面的ExpandMenuView。

解决办法:Popupwindow的最底层布局设置一个透明度,而不是设置windows的透明度。如果你还没实现想要的效果,说明那还不是pop的最底层布局。这个时候,如果你想控制列表的显示高度,只在这块滚动,那么在xml中设置listview的高度就成。

3.Popupwindow的showAsDropDown的方法。让pop有时显示在上面,有时显示在下面,体验不好。

解决办法:ppwfilter.showAsDropDown(parent, xoff, yoff, gravity)//parent:传你当前Layout的id; gravity:Gravity.BOTTOM(以屏幕左下角为参照)... 偏移量会以它为基准点 当x y为0,0是出现在底部居中

api19及其以上才有这个办法。把minSdkVersion改了。

其中不足,欢迎大家指正。

代码地址:https://github.com/BoloPie/MyApplication

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容