首页
JAVA笔记
数据库笔记
混乱记忆
小站记
您现在的位置
android 获取控件位置 (有示例)
简介: 获取控件相对于 activity 或相对于屏幕左上角的坐标。

在控件定制过程中可能遇到需要获取谋控件相对于屏幕或相对于 activity 的 x y 坐标,找到如下方法,特此记录。

getLocationOnScreen :计算该视图在全局坐标系中的x,y值,(注意这个值是从屏幕顶端算起,包括了通知栏的高度)//获取在当前屏幕内的绝对坐标
getLocationInWindow :计算该视图在它所在的widnow的坐标x,y值,//获取在整个窗口内的绝对坐标 (actvity dialog 之类的 控件 底层 都是 window,所以获取 button 的坐标时我们一般使用该方法)
getLeft , getTop, getBottom,getRight, 这一组是获取相对在它父亲里的坐标
如果在Activity的OnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到这些

 

//以下代码是 当点击一个 button 时在其下方弹出一个自定义的dialog

button.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    int[] local = new int[2];
    v.getLocationInWindow(local);
    Log.i(this.getClass().getName(), "xxx:"+local[0]+"yyy:"+local[1]);
    Dialog dialog = new CustomDialog(CourseDetailQueActivity.this);
    
    WindowManager.LayoutParams layout= dialog.getWindow().getAttributes();
    layout.x =local[0];
    layout.y=local[1]+v.getHeight();
    layout.gravity =Gravity.LEFT|Gravity.TOP;
    dialog.onWindowAttributesChanged(layout);
    dialog.show();
  
   }
  });