android自定义PopWindow底部显示

转发地址:http://blog.csdn.net/u012925323/article/details/47658927

最近开发一款留言板手机客户端,需要到对话框来确认用户操作,但是系统自带的对话框很丑,不想用,所以就自定义PopWindow,想怎么显示就怎么显示,而且还方便添加显示动态,和背景图片。下面,我就来分享一下我的学习经验。 
1、什么是popWindow?(1、2是博主网上找的) 
popWindow就是对话框的一种方式!此文讲解的android中对话框的一种使用方式,它叫popWindow。 
2、popWindow的特性 
Android的对话框有两种:PopupWindow和Dialog。它们的不同点在于: 
Dialog的位置固定,而PopupWindow的位置可以随意。 
PopupWindow的位置按照有无偏移分,可以分为偏移和无偏移两种;按照参照物的不同,可以分为相对于某个控件(Anchor锚)和相对于父控件。具体如下 
showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移 
showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移 
showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移 
3、PopWindow中控件的监听 
PopWindow已经添加到布局中去了,那么问题来了,我要怎么通过自定义的控件来处理同级容器中的事件?其实很简单,博主在这里分享两种,第一种是通过接口:在PopWindow同级容器中实现自定义的相应接口,然后在传入到PopWindow对象中,在PopWindow对象中组件的监听事件中通过接口回调来实现控制;第二种方法就是:在继承于PopWindow的类中添加一个返回PopWindow布局的View的共有方法getPopWindowView(),在同级容器中定义PopWindow中控件的引用,然后将引用通过getPopWindowView().findViewById(R.id.xxx)指向相应的控件对象,最后在通过引用添加监听事件。 
4、手机虚拟按键存在与否对底部滑出PopWindow的影响 
当存在虚拟按键时候如果底部滑出相对于同级容器中的某个组件,则显示不完全,没有虚拟按键则不存在这种问题。怎么解决呢?其实很简单,只需要通过相对于父级容器位置来显示。即用showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等)。 
5、点击PopWindow外部消失问题 
在继承与PopWindow的类中必须实现setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT))这个方法来设置背景色才行,否则不行,当然我这里设置的全透明,只显示背景图片。

你可能感兴趣的:(android自定义PopWindow底部显示)