2017-08-03 65 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_」開頭的參數來描述如何將視圖放入與其超級視圖相關的視圖,當您使用充氣器構建視圖時,不提供視圖。

這應該是非常明顯的,但只是使用您發佈的第二種方法。