android获取自定义控件位置坐标,屏幕尺寸,标题栏,状态栏高度
1.获取自定义控件height
在本Activity中获取当前Activity中控件的height:
Button button = (Button)findViewById(R.id.button); int buttonHeight = button.getHeight();
在Activity中获取其他xml文件中控件的height:
LayoutInflater factorys = LayoutInflater.from(当前类.this); final View textEntryView = factorys.inflate(R.layout.你要获取的另一个XML, null); TextView y_type = (TextView) textEntryView.findViewById(R.id.控件ID); int textHeight = y_type.getHeight();或者
LayoutInflater inflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE); final View layout = inflater.inflate(R.layout.my_kebiao_setting,null); TextView y_type = (TextView)findViewById(R.id.控件ID); int textHeight = y_type.getHeight();
2.获取屏幕尺寸:
DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int screenWidth=metrics.widthPixels; //屏幕宽度 int .screenHeight=metrics.heightPixels; //屏幕高度
这段代码可以插入到Activity的onCreate()函数中。
3.获取标题栏、状态栏高度:
Rect rect = new Rect(); Window win = this.getWindow(); win.getDecorView().getWindowVisibleDisplayFrame(rect); int statusBarHeight = rect.top; int contentViewTop = win.findViewById(Window.ID_ANDROID_CONTENT).getTop(); int titleBarHeight = contentViewTop - Variable.statusBarHeight; //statusBarHeight为状态栏高度,titleBarHeight为标题栏高度
getLocationOnScreen 计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是包括了通知栏的高度)//获取在当前屏幕内的绝对坐标
getLocationInWindow 计算该视图在它所在的widnow的坐标x,y值,//获取在整个窗口内的绝对坐标
getLeft , getTop, getBottom, getRight, 这一组是获取相对在它父亲里的坐标
int[] location = new int[2] ; view.getLocationInWindow(location); //获取在当前窗口内的绝对坐标 view.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标 location [0]--->x坐标,location [1]--->y坐标