MeasureSpec
View的MeasureSpec由父容器的MeasureSpec以及自身的LayoutParams决定的;
[图片上传失败...(image-67326b-1706696414006)]
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_parent,子view的大小为0;模式为Unspecified;
getLeft,getRight,getTop,getBottom,getWidth(),getHeight();
Getleft:子view的左边界到父view的左边界的距离;
getRight:子view的右边界到父view的左边界距离;
getTop:子view的顶部到父view的顶部距离;
getBottom:子view的底部到父view的顶部距离;
getWidth: getRight-getleft;