2

我膨脹的觀點在這個方法:我怎樣才能設置充氣的視圖寬度,它的父母的一半?

public TabViewHolder onCreateViewHolder(ViewGroup parent, int viewType){ 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.tabs_layout, parent, false); 
    return new TabViewHolder(view); 
} 

因爲「」的,我的LinearLayout不重視它的父因此沒有父母,我不能使用Layer_Weight (我用view.getParent()進行了測試,它返回null)。因爲當我在組合使用Layer_Weight用 「Layer_Width = 0dip」 的LinearLayout消失。

如果我使用「」作爲第三個參數(view.getParent()返回父),我得到這個錯誤:

指定的孩子已經有一個家長,你必須調用首先刪除子對象的父對象()「。

這是父:

<android.support.v7.widget.RecyclerView android:id="@+id/tabBar" style="@style/tabBar"/> 

這是父樣式:

<style name="tabBar"> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">0dip</item> 
    <item name="android:layout_weight">0.1</item> 
    <item name="android:weightSum">1</item> 
    <item name="android:background">@color/headerBg</item> 
</style> 

這是LinearLayout中,孩子風格:

<style name="tabLayout"> 
    <item name="android:layout_width">0dip</item> 
    <item name="android:layout_height">match_parent</item> 
    <item name="android:layout_weight">0.5</item> 
    <item name="android:orientation">horizontal</item> 
    <item name="android:gravity">center_vertical</item> 
</style> 

這是孫子,TextView:

<style name="tabItem"> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
</style> 

我如何設置的LinearLayout寬度,其中有一半的家長嗎?

預先欣賞它。

+0

的問題是,你的意見也不會出現在RecyclerView'的'一個孩子 - 他們似乎爲你的佈局管理器創建的視圖的孩子。你將不得不爲他們設置重量總和,但你不能。你想要達成什麼目標?對我來說,如果您將整個RecyclerView的寬度設置爲其父項的一半寬度,您的問題將得到解決 – wasyl

+0

謝謝wasyl。我有一個片段容器和一些要加載的片段。這些片段中的一些片段被類似標籤的東西改變,但其他片段會隨着菜單而改變,並且這些片段沒有內部的標籤。我使用recyclerView作爲選項卡容器,並且在一個屏幕中應該只有兩個寬度相同的選項卡,並且recyclerView應該是水平的。我已經在recyclerView中使用了layer_weight和layer_height。我如何使用layer_width? – Arash

回答

1

我用這種方式來達到目標​​。

我將recyclerView作爲參數發送給tabBarAdapter,該參數將對linearLayout(child)進行膨脹,並在此適配器中將linearLayout的寬度設置爲onCreateViewHolder方法中recyclerView的一半寬度。

view.getLayoutParams().width = tabBar.getWidth()/2; 

我認爲,這是對「鬆耦合」(我想完全分開的代碼樣式)。

+0

它不適用於更新版本的recyclerview:\ –

+0

謝謝Diogo Garcia。但我沒有改變我的代碼,我的應用程序仍然正常工作,我的android版本是6.0.1。或更新版本的recyclerview是新的語法。 – Arash

相關問題