getWidth(),getMeasuredWidth(),View.getLayoutParams.width的区别详解

在学习中总结了一些特点 :
- getWidth()在layout执行完后才能获取宽度,在onMeasure()方法中是拿不到的
- 而固定宽度,可以通过layoutParams.width获取,如果是wrap_content也是不能获取的
- getLayoutParams.width可以在onMesure方法中获取
- getMeasureedWidth();在onMeasure()执行完后才会有值
View的大小由width和height决定。一个View实际上同时有两种width和height值
• 第一种是measure width和measure height。他们定义了view想要在父View中占用多少width和height(详情见Layout)。measured height和width可以通过getMeasuredWidth() 和 getMeasuredHeight()获得。

• 第二种是width和height,有时候也叫做drawing width和drawing height。这些值定义了view在屏幕上绘制和Layout完成后的实际大小。这些值有可能跟measure width和height不同。width和height可以通过getWidth()和getHeight()获得。
这两个方法所获取的width和height可能跟实际draw后的不一样。
ps: 还有第三种方法(其实属于第二种):
LinearLayout.LayoutParams params=(LayoutParams) view.getLayoutParams();

你可能感兴趣的:(Anroid,宽高)