MeasureSpec
View的MeasureSpec由父容器的MeasureSpec以及自身的LayoutParams决定的
image.png
- Exactly模式:可以理解为确定的大小,就为Exactly模式,比如match_parent(和屏幕等宽等高等等)
- AT_MOST模式:可以理解为不超过,只有一个范围的模式
1 当父容器是Exactly模式
- 如果子view是Exactly模式(当用户指定了具体的数值(宽/高)),那么这个子view的resultSize就是你赋值的这个具体的值;
- 如果子view指定是match_parent,那么子view的resultSize依然是父容器给与的最大值,模式还是exactly;
- 如果子view指定的是wrap_content,那么子view的resultSize还是父容器给与的最大值,但是模式就变成了at_most;
2 当父容器是At_most模式
- 如果子view是Exactly模式(当用户指定了具体的数值(宽/高)),那么这个子view的resultSize就是你赋值的这个具体的值;
- 如果子view指定是match_parent,那么子view的resultSize依然是父容器给与的最大值,模式还是at_most;
- 如果子view指定的wrap_content,子view的resultSize就是父控件的size,模式是at_most;
3 当父容器是Unspecified(这个模式我们基本用不到,大部分都是系统内部使用)
- 如果子view是Exactly模式(当用户指定了具体的数值(宽/高)),那么这个子view的resultSize就是你赋值的这个具体的值;
- 如果子view指定的是match_parent,子view的大小为0;模式为Unspecified;
- 如果子view指定的是wrap_content,子view的大小为0;模式为Unspecified;
getLeft,getRight,getTop,getBottom,getWidth(),getHeight();
Getleft:子view的左边界到父view的左边界的距离;
getRight:子view的右边界到父view的左边界距离;
getTop:子view的顶部到父view的顶部距离;
getBottom:子view的底部到父view的顶部距离;
网友评论