浅谈PopupWindow

来源:互联网 发布:数据分析师能力 编辑:程序博客网 时间:2024/06/07 06:25
PopupWindow是基于在Activity上显示的弹出窗口,PopupWindow 与 Dialog(对话框)相同的是,都是在一个Activity上面弹出来,但不一样的是,PopupWindow没有标题和内容按钮这类的概念,所以PopupWindow里的内容其实就是一个XML布局文件,只需要有一个自定义布局文件(xml)然后把它实例化一个View对象,再调用PopupWindow的setContentView方法,就可以了,但这时要设置好PopupWindow宽和高,因为如果没有设置,是不显示的。然后可以根据需求再设置一些其他参数,例如焦点。


步骤是:new一个PopupWindow 对象,可以在构造方法里设置宽高,也可以通过setWidth和setHight来设置,然后通过setContentView方法把布局文件设进去,再根据需要设置其他参数,然后调用显示的方法,把PopupWindow 显示

PopupWindow的显示方式有3种:

// 相对某个控件的位置(正左下方),无偏移pop.showAsDropDown(View anchor) // 相对某个控件的位置,有偏移,xoff 为 X 轴的偏移量,yoff 为 Y 轴的偏移量                          pop.showAsDropDown(View anchor, int xoff, int yoff)// 在父容器的什么位置,gravity 为相对位置,如:正中央 Gravity.CENTER、下方 Gravity.BOTTOM、Gravity.RIGHT|Gravity.BOTTOM 右下方等,后面两个参数为 x/y 轴的偏移量。pop.showAtLocation(View parent, int gravity, int x, int y)
下面通过代码示例创建一个PopupWindow

//创建一个View对象(R.layout.two指Popupwindow里的布局文件)LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View vv = inflater.inflate(R.layout.two, null);//创建一个PopupWindow对象,并设置宽高PopupWindow pop = new PopupWindow(120,100);//设置Viewpop.setContentView(vv);//如果需要设置其他参数可以参考下面//设置控件的宽(如设置LinearLayout的宽一样)setWidth(LayoutParams.FILL_PARENT);//设置控件的高(如设置LinearLayout的高一样)setHeight(LayoutParams.WRAP_CONTENT);//设置可点击里面的东西setFocusable(true);//设置背景ColorDrawable cd = new ColorDrawable(0xb0000000);setBackgroundDrawable(cd);
//最后调用显示方法,至于调用哪个显示方法,就看具体的需求了


写到这里已经完成了简单的Popupwindow弹出功能


0 0
原创粉丝点击