自定义View中MeasureSpec和LayoutParams的关系

790 阅读1分钟

###对于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