popupWindos使用说明

来源:互联网 发布:centos和linux的区别 编辑:程序博客网 时间:2024/05/29 03:45

先把几个属性讲解一下:

//获取自身的长宽高

view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);

popupHeight = view.getMeasuredHeight();

popupWidth = view.getMeasuredWidth();

int[] location = new  int[2] ;
view.getLocationInWindow(location); //获取在当前窗口内的绝对坐标
view.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标
location [0]--->x坐标,location [1]--->y坐标---注意:控件的左上角坐标-popupWindos显示方式是

左上角控件的左上角

getLocationOnScreen

,计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度)//获取在当前屏幕内的绝对坐标

getLocationInWindow ,计算该视图在它所在的widnow的坐标x,y值,//获取在整个窗口内的绝对坐标 (不是很理解= =、)

getLeft getTop, getBottom,getRight, 这一组是获取相对在它父亲里的坐标

如果在Activity的OnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到这些。

 

getLocationOnScreen ,计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度)//获取在当前屏幕内的绝对坐标 

getLocationInWindow ,计算该视图在它所在的widnow的坐标x,y值,//获取在当前所在窗口内的绝对坐标 ()

控件的getLeft getTop, getBottom, getRight, 这一组方法是获取相对在它自身的大小

在Activity的OnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到这些。


  // 设置可以获得焦点 PopupWindow是否具有获取焦点的能力,默认为False。一般来讲是没有用的,因为普通的控件是不需要获取焦点的,而对于EditText则不同,如果不能获取焦点,那么EditText将是无法编辑的

setFocusable(true);

  // 设置弹窗内可点击 

setTouchable(true); 

// 设置弹窗外可点击 

//这个函数不只能设置背景……,因为你加上它之后,setOutsideTouchable()才会生效;

//而且,只有加上它之后,PopupWindow才会对手机的返回按钮有响应:即,点击手机返回按钮,可以关闭PopupWindow

setBackgroundDrawable(Drawable background)

setOutsideTouchable(true); 

//设置显示动画

setAnimationStyle(R.style.popup_animation); 

//设置显示的布局

setContentView(view); 

-------------------------------终点设置到控件上方的代码---------------------------------------------------

//获取自身的长宽高

 view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); (获取要加载控件的宽高)

  int popupHeight = view.getMeasuredHeight(); 

int popupWidth = view.getMeasuredWidth(); 

//获取需要在其上方显示的控件的位置信息 

int[] location = new int[2];  //初始化存放控件坐标的一个数组

imgView.getLocationOnScreen(location); //获取控件坐标(x, y)注意:这里的坐标是控件的左上角popup以此显示

 //在控件上方显示

popupWindow.showAtLocation(mView , Gravity.NO_GRAVITY, location[0] + 

(mView.getWidth() -mGradeLayout.getMeasuredWidth())/2,
location[1] -mGradeLayout.getMeasuredHeight() );

 


0 0
原创粉丝点击