android inflate

116 阅读1分钟
layout_width 和 layout_height属性在layout中才生效,即一个viewGroup或者view只有存在于布局中,这两个属性才会生效

public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)

1.LayoutInflater.from(appCompatActivity).inflate(layoutRes, null, true or false) root参数传空,attachToRoot传true或false都一样,inflate的view最外层的layout_width 和 layout_height不生效,因为此时inflate的view不存在任何一个layout中,必须调用addView(View child, LayoutParams params)加入到layout中,params指定最外层的layout_width 和 layout_height

2.LayoutInflater.from(appCompatActivity).inflate(layoutRes, viewGroup, true) 把inflate的view加入到viewGroup中,通过setLayoutParams修改最外层的layout_width 和 layout_height不生效,不能再调用addView方法,因为已经自动加入到layout中了。

3.LayoutInflater.from(appCompatActivity).inflate(layoutRes, viewGroup, false) inflate的view最外层的layout_width 和 layout_height会因为传入viewGroup,当调用addView方法时生效,通过setLayoutParams修改最外层的layout_width 和 layout_height会生效,必须调用addView方法加入到layout中。