2013-12-19 34 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