2015-12-14 446 views
-2

我發現你可以通過這三種方式膨脹佈局。但是不能在相應的語句中使用第二個和第三個參數。什麼是ViewGroup和attachedToroot參數?膨脹佈局方法和這些參數有什麼區別

一個活動以外首次使用:

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view = inflater.inflate(R.layout.myNewInflatedLayout, ViewGroup); 
View view = inflater.inflate(R.layout.myNewInflatedLayout, ViewGroup, attachedToroot); 

Button myButton = (Button) view.findViewById(R.id.myButton); 
+0

這可能有助於:http://stackoverflow.com/questions/31854605/confusion-regarding-inflater-inflate-android-documentation –

+0

@gauravjain我的問題不僅是第二部分,而且還有關於添加viewGroup或不添加。 – Kenji

回答

1

我會盡量回答你對使用第二個參數和第三個參數的疑問。

第二個參數是一個ViewGroup中,這是在該文檔中描述:

公衆查看充氣(INT資源的ViewGroup以及根)

充氣從指定的XML資源的新視圖層次結構。如果發生錯誤,則拋出InflateException。

可選視圖是生成的層次結構的父級。

返回

充氣層次的根視圖。如果root提供了,則這是根視圖 ;否則它就是膨脹的XML文件的根源。

在此基礎上,有兩種可能性,我看到:

  1. 你的ViewGroup設置爲空。在這種情況下,您的佈局將在活動中膨脹,但該膨脹層次結構的根視圖將成爲xml文件的根。所以如果你的xml有一個相對佈局或者任何其他佈局作爲根元素,那麼它將成爲你膨脹的層次結構的根。你會碰到這樣的:

    <xml> // Whatever is the root of this xml, is your root for the inflated hierarchy.

  2. 如果你的ViewGroup設置到別的東西,這將成爲膨脹層次的根。所以,實際上你會有這樣的事情: <Your Viewgroup> <Your xml> </Your Viewgroup> 這裏很明顯,在這種情況下,你指定的viewgroup將是充氣層次結構的父親。所以我認爲這完全取決於你的要求。

關於第三個參數:Confusion regarding inflater.inflate Android documentation

你可以閱讀我的這個鏈接的回答,來了解更多關於它。希望這會幫助你。

+0

好的謝謝它使用完整。但我仍然不會得到第三個參數,它是什麼?我的意思是「attachedToroot」 – Kenji

+0

你有沒有按照我給的鏈接,因爲我認爲我在那裏解釋得很清楚。 –

0

如果你看一下developer.android.com參考,你會看到四個公共方法。

inflate

用得最多的兩個是你在你的問題寫的那些。

inflater.inflate(R.layout.myNewInflatedLayout, ViewGroup);

inflater.inflate(R.layout.myNewInflatedLayout, ViewGroup, attachedToroot);

這裏是真正偉大的article摘錄有關通貨膨脹的佈局。

第一個參數指向要膨脹的佈局資源。 第二個參數是您要擴展要附加到的資源的層次結構的根視圖。當第三個參數是 存在時,它控制膨脹後的膨脹視圖是否附加到 提供的根。

我建議你把它讀到最後。希望這個幫助。 :)

+0

我使用null作爲第二個參數,但我沒有任何問題顯示在我的活動中。我應該通過傳遞適當的觀點組來關注我的活動嗎?有必要嗎?使用它的好處是什麼? – Kenji

+0

@Kenji我與你分享了整篇文章。你必須閱讀整篇文章。一切都在那裏。這是回答。 –