您的位置:首页 > 移动开发 > Android开发

android 获取控件屏幕位置 动态添加 视图

2013-09-14 13:56 489 查看


Android中getLocationOnScreen和getLocationInWindow


int[] location = new int[2] ;

/**获取在当前窗口内的绝对坐标,getLeft , getTop, getBottom, getRight, 这一组是获取相对在它父窗口里的坐标。*/

view.getLocationInWindow(location);

//获取在整个屏幕内的绝对坐标,注意这个值是要从屏幕顶端算起,也就是包括了通知栏的高度。

view.getLocationOnScreen(location);


其中 location [0]代表x坐标,location
[1] 代表 坐标。


所以在需要确定组件在父窗体中的坐标时,使用getLocationInWindow,需要获得组件在整个屏幕的坐标时,使用getLocationOnScreen。



这里要注意虽然getLocationOnScreen是获取组件在屏幕中的坐标,但如果我们想拿到这个坐标,并且在这个坐标附近再添加一个组件时,直接使用拿到的坐标来建立新的组件是达不到效果的。

View itemView = userManagerView.getListView().getChildAt(j);// 获取列表子项

int[] location =newint[2];

itemView.getLocationOnScreen(location);

ImageView image =newImageView(getContext());

image.setBackgroundResource(R.drawable.operator);

if(GlobalData.loginState()){

params=newAbsoluteLayout.LayoutParams(LayoutParams.WRAP_CONTENT,

LayoutParams.WRAP_CONTENT, location[0]-15, location[1]-95);

}else{


params=newAbsoluteLayout.LayoutParams(LayoutParams.WRAP_CONTENT,


LayoutParams.WRAP_CONTENT, location[0]-15, location[1]-25);

}

image.setLayoutParams(params);

在代码中,我想根据itemVIew的坐标来绘制一个新的ImageView控件,但如果整个界面没有父容器时,拿到的坐标是可以直接使用的,而当前界面上有父容器,或者有与其平行的界面时,坐标是有偏移的,所以我加上了有些判断处理,根据不同的布局,适当的调整下坐标的偏移量

------------------------------------------------------------------------------------------------------------------

项目中遇到的情况是在初始化就展开的ExpandableListView的第一组第一个控件上添加一个
WindowManager 导航

注:WindowManager
的视图是包含自己画的继承自 View 的类


View
view = mExpandableListView.getChildAt(1).findViewById(R.id.xxxxxx);

就找到了控件
然后计算位置添加视图 。。。巴拉巴拉

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐