2017-08-03 58 views
0

当父零膨胀:LayoutInflater父

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); 

文本PARAMS工作

text params work and hello word in center

为什么?

+0

因为您的相对布局是视图v的父级,所以您必须将第二个参数添加为'relativeLayout'而不是null。 –

+0

,因为你的相对布局是视图v的父对象,所以你必须添加第二个参数作为'relativeLayout'而不是null。 –

回答

0

你是否注意到当你传递null作为父对象时你会得到这个lint警告?

enter image description here

或者你注意到,在XML中的意见有一些属性前缀为layout_开始和其他不?

由视图的父ViewGroups使用以layout_开头的属性来测量,布局和绘制视图。所以你应该总是传递一个父ViewGroup来扩充布局。

如果您将null作为父项传递,则inflater不知道您传递的布局的父项是什么。它可能是FrameLayoutRelativeLayout或其他布局。所以如果你没有通过一个合适的父母布局,layout_ params被忽略。

+0

当我使用addView(v);我把文本中的RelativeLayout 内 因此,这两个问题都在RelativeLayout内部,因此RelativeLayout的平均值是父亲的两种方式 – hackour

+0

只有当视图被夸大时,xml属性才会被解析并应用到布局。视图添加到布局时不会完成。 – Bob

+0

哦,所以当我把父母不为空xml属性被解析并应用到布局,但是当我使用null并添加手动addView(); ... 添加文本但不应用xml属性? – hackour

0

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

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