自定义View中MeasureSpec和LayoutParams的关系

对于View是由屏幕和LayoutParams控制

  • 如果LayoutParams是Match_parent,那么是MeasureSpec.EXACTLY
  • 如果LayoutParams是具体的dp,那么是MeasureSpec.EXACTLY
  • 如果LayoutParams是wrap_content,那么是MeasureSpec.AT_MOST

对于子View是由ParentSpecMode和子View的LayoutParmas控制

总结图如下:


image.png
  • 如果ParentSpecMode是MeasureSpec.EXACTLY,子View的LayoutParams是Match_parent或者具体的dp,那么是MeasureSpec.EXACTLY

  • 如果ParentSpecMode是MeasureSpec.EXACTLY,子View的LayoutParams是wrap_content,那么是MeasureSpec.AT_MOST

  • 如果ParentSpecMode是MeasureSpec.AT_MOST,子View的LayoutParams是具体的dp,那么是MeasureSpec.EXACTLY

  • 如果ParentSpecMode是MeasureSpec.AT_MOST,子View的LayoutParams是wrap_content或者match_parent,那么是MeasureSpec.AT_MOST

  • 如果ParentSpecMode是MeasureSpec.UNSPECIFIED,子View的LayoutParams是具体的dp,那么是MeasureSpec.EXACTLY

  • 如果ParentSpecMode是MeasureSpec.UNSPECIFIED,子View的LayoutParams是wrap_content或者match_parent,那么是MeasureSpec.UNSPECIFIED

你可能感兴趣的:(自定义View中MeasureSpec和LayoutParams的关系)