LayoutInflater父级

时间:2017-08-03 16:28:41

标签: android layout-inflater

当使用父null进行膨胀时:

LayoutInflater I = getLayoutInflater();
        RelativeLayout relativeLayout = (RelativeLayout)findViewById(R.id.Relative);
        View v = I.inflate(R.layout.text,null);

        relativeLayout.addView(v);

the text have params android:layout_centerHorizontal="true" android:layout_centerVertical="true" but when add manual to the relativeLayout the params dosent work

但是当我使用这段代码时:

   LayoutInflater I = getLayoutInflater();
            RelativeLayout relativeLayout = (RelativeLayout)findViewById(R.id.Relative);
            View v = I.inflate(R.layout.text,relativeLayout);

文本参数

text params work and hello word in center

为什么?

2 个答案:

答案 0 :(得分:0)

以“android:layout_”开头的参数用于描述视图应如何与其超级视图相关联,当您使用充气器构建视图时,您不会提供该视图。

这应该是非常明显的,但只需使用您发布的第二种方法。

答案 1 :(得分:0)

您是否注意到在将null作为父项传递时会收到此lint警告?

enter image description here

或者您是否注意到xml中的Views有一些以前缀layout_开头的属性而其他属性没有?

layout_开头的属性由视图的父ViewGroup用于度量,布局和绘制视图。因此,您应始终传递父ViewGroup以扩充布局。

如果您将null作为父级传递,则inflater不知道您传递的布局的父级是什么。它可以是FrameLayoutRelativeLayout或其他一些布局。因此,如果您没有传递正确的父布局,则忽略layout_参数。