Android中PopupWindow开发遇到的若干问题

来源:互联网 发布:淘宝房屋司法拍卖平台 编辑:程序博客网 时间:2024/06/05 00:47

不是博主不努力,只是问题特别多。就是一个小小的PopupWindow,我竟然也折腾了一下午。但是收获也不少。

 

1、适合的场景

PopupWindow因为样式灵活,可以控制显示位置,非常方面用来做弹出窗口,这次我做的是一个仿下拉菜单效果的弹窗。效果如下图:

效果很简单但是主要有两个问题

1、如何实现自适应的带箭头的下拉框。

2、如何点击选项后将值传入到启动的Activity中。

 

下面是我在编码时遇到的问题:

总体思路是:通过继承PopupWindow类自定义扩展的PopupWindow。用.9.png格式的图片文件做为背景图片,.9.png各试点额图片可以设置拉伸区域和文字区域,这样就可以保证箭头不被拉伸。在自定义的Pop...类中,声明一个接口,在Activity中实现该接口,列表条目注册单击事件执行Activity中实现的接口。

遇到的问题:

1、开始的时候设置PopupWindow中Layout的背景图片,发现有背景色,开始没想到这个背景色是PopupWindow的背景色(PopupWindow不等同于其中的Layout,只有Layout与之大小一致,且Layout的背景颜色或图片不透明时Layout完全覆盖PopupWindow背景),同理Layout也不等同于Activity的背景色。

 所以 用PopupWindow.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.dropdown));设置PopupWindow的背景色。

2、折磨人的.9.png,解决好背景色的问题后又迎来了一个新的问题

PopupWindow中只有左边显示文字,右边空着,开始以为是Layout的问题,把所有的Layout写死固定长度,可这个问题就像幽灵似得存在,各种折磨各种煎熬。各种尝试解决办法,最后当我替换背景图为普通图时,全部显示出来了,所以问题定位到了.9.png上了。

 

这时候才想起来:编辑.9.png的时候忘记指定文字显示区域了,(其实开始没忘,后来去黑边的时候给去掉了,忘记了)

 

结论:.9.png一定要加上编辑区域!!

 

PS xxx.9.png是用Android SDK提供的工具将普通png编辑成可以指定区域拉伸的特殊png。两者的变化就是在.9.png图片边上有一像素宽的边线,左边和上边表示可拉伸区域,下边和右边表示的是文字显示区域。

 

0 0