2013-12-19 52 views
0

我正在構建一個要在listview中使用的條形圖。酒吧用LinearLayout和Weights構建。含有下XML僅設置一個杆條形圖的簡單表示:Android listview更改子視圖的佈局大小

<LinearLayout 
    android:id="@+id/chart" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
    <LinearLayout 
     android:id="@+id/bar" 
     android:layout_width="20dp" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:paddingLeft="3dp" 
     android:paddingRight="3dp"> 
     <View 
      android:id="@+id/counter_weight" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" /> 
     <View 
      android:id="@+id/visible_part_of_bar" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" /> 
    </LinearLayout> 
</LinearLayout> 

如果希望此條來表示說60%,可以設置visible_part_of_bar至60的重量和counter_weight至40的重量。

該視圖本身工作得很好,但在listview中,子視圖的高度未正確更新。添加到這一點很奇怪的是,你可以更新列表視圖中的酒吧的背景顏色,但其他一切似乎被忽略。

有什麼想法可能會出錯?

回答

0

它看起來像你正在試圖利用LinearLayout加權系統,但它看起來不像你有正確的設置。

  • 添加以下所述的LinearLayout XML標籤: 機器人:weightSum = 「1.0」
  • 添加以下的第一視圖(60% 高度):機器人:layout_weight =
  • 」 6" 。
  • 添加以下到第二 視圖(60%的高度):機器人:「4" layout_weight =

如果你是編程應用這些佈局的變化,你可能會想打電話給requestLayout()上行後的根視圖進行更改。

+0

LinearLayout的權重和不需要總和爲1.0。如前所述,該視圖在ListView外部工作得很好。 我試着在rootview上調用requestLayout,不幸的是它沒有效果。感謝您的嘗試! – jonte