android——获取view的宽高

简介:
  1. 在activity生命周期方法:onCreate(),onStart(),onResume()中调用View.getWidth()和View.getHeight()方法获取View的高度是不可行的,因为此时布局没有加载是不可见状态。

    还有当view的可见状态为:GONE,时获取的宽高也是0;

2. 解决办法:

(1)直接测量:

1
2
3
4
5
6
7
8
9
10
private  void  first() {
         int  width = View.MeasureSpec.makeMeasureSpec( 0 ,
                 View.MeasureSpec.UNSPECIFIED);
         int  height = View.MeasureSpec.makeMeasureSpec( 0 ,
                 View.MeasureSpec.UNSPECIFIED);
         textView.measure(width, height);
         int  height1 = textView.getMeasuredHeight();
         int  width2 = textView.getMeasuredWidth();
         System.out.println( "first: 宽: "  + width2 +  "  高: "  + height1);
     }

(2)添加绘制view之前的监听

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private  void  second() {
         ViewTreeObserver vto = textView.getViewTreeObserver();
 
         vto.addOnPreDrawListener( new
 
         ViewTreeObserver.OnPreDrawListener() {
 
             public  boolean  onPreDraw() {
 
                 int  height = textView.getMeasuredHeight();
 
                 int  width = textView.getMeasuredWidth();
 
                 System.out.println( "second:  宽:"  + width +  "  高: "  + height);
 
                 return  true ;
             }
 
         });
     }

(3)添加整体布局监听

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private  void  third() {
         ViewTreeObserver vto = textView.getViewTreeObserver();
 
         vto.addOnGlobalLayoutListener( new  OnGlobalLayoutListener() {
 
             public  void  onGlobalLayout() {
 
                 textView.getViewTreeObserver().removeGlobalOnLayoutListener(
                         this );
 
                 int  height = textView.getMeasuredHeight();
 
                 int  width = textView.getMeasuredWidth();
                 System.out.println( "third:  宽:"  + width +  "  高: "  + height);
             }
 
         });
     }














本文转自wauoen51CTO博客,原文链接:http://blog.51cto.com/7183397/1606535  ,如需转载请自行联系原作者


相关文章
|
3月前
|
Android开发 容器
Android UI设计: 什么是View和ViewGroup?
Android UI设计: 什么是View和ViewGroup?
35 0
|
7月前
|
API Android开发
Android 自定义最大宽度,高度, 宽高比例 Layout
Android 自定义最大宽度,高度, 宽高比例 Layout
|
4月前
|
XML API Android开发
Android 自定义View 之 圆环进度条
Android 自定义View 之 圆环进度条
|
6月前
|
SQL 人工智能 移动开发
Android 遍历界面所有的View
本文讲述如何遍历获取页面中所有的view,并输出对应的id,textview文本内容,imageview实际大小及设置的图片大小。 可用于检测android应用中的大图。
|
4月前
|
XML API Android开发
Android 自定义View 之 Dialog弹窗
Android 自定义View 之 Dialog弹窗
|
4月前
|
XML API Android开发
Android 自定义View 之 饼状进度条
Android 自定义View 之 饼状进度条
|
4月前
|
XML API Android开发
Android 自定义View 之 简易输入框
Android 自定义View 之 简易输入框
|
4月前
|
XML API Android开发
Android 自定义View 之 计时文字
Android 自定义View 之 计时文字
|
4月前
|
XML Android开发 数据格式
Android 自定义View 之 Mac地址输入框(下)
Android 自定义View 之 Mac地址输入框(下)
|
4月前
|
XML Java Android开发
Android 自定义View 之 Mac地址输入框(上)
Android 自定义View 之 Mac地址输入框(上)