美文网首页
LayoutParams 的说明

LayoutParams 的说明

作者: 浮云骑士_ | 来源:发表于2017-03-27 10:02 被阅读0次

    讲解
    我们知道,我们可以通过LayoutParams设置宽度和高度,为什么没有setHeight() 和setWidth()?

    因为控件的高度和宽度控制影响的不止是控件本身,对应的父容器也需要改变。而且我们某些情况也需要设置控件的宽高为wrap_content或者match_parent 。

    所以我们需要一个规范,这个规范可以是接口,可以是类。

    这个时候父容器可以给子控件一个LayoutParams,子控件去改变LayoutParams的值从而改变自己的属性,这个时候父控件也可以调用方法获取子空间的相应的属性,不然如果任由子控件进行属性设置,假如子空间实现的是getWidth2() 而不是getWidth() 那不是父控件获取不到了?😄

    其实还有一个作用,就是告诉父控件我子控件的约束是什么,因为比如RelativeLayout具有一些特殊的属性,比如layout_centerInParent,这个时候我们子控件就可以通过

    indicateLayoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
    

    来建立父控件和子控件的联系。

    LayoutParams产生
    它的产生过程,需要研究ViewGroup.addView的源码
    对调用addView(View view)这个方法时,

    1.判断View.getLayoutParams()是否为空
    2.如果是空,通过父控件的generateLayoutParams()来赋给子控件LayoutParams
    3.如果不为空,就直接使用子控件的LayoutParams。


    还有一个addView(View view , LayoutParams params)
    这个时候就是手动给值了。

    tip: 子控件的构造方法不会创建LayoutParams

    相关文章

      网友评论

          本文标题:LayoutParams 的说明

          本文链接:https://www.haomeiwen.com/subject/coilottx.html