Android列表视图更改子视图的布局大小

时间:2013-12-19 12:19:33

标签: android listview android-listview

我正在构建一个将在列表视图中使用的条形图。条形图使用LinearLayout和Weights构建。条形图的简单表示,仅包含以下XML中提供的一个条形码:

<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.

视图本身工作正常,但在列表视图中,子视图的高度未正确更新。添加一个非常奇怪的事情是你可以更新列表视图中栏的背景颜色,但其他一切似乎都被忽略了。

有什么可能出错的想法?​​

1 个答案:

答案 0 :(得分:0)

看起来您正在尝试利用LinearLayout加权系统,但看起来您没有正确设置。

  • 将以下内容添加到LinearLayout xml标记中: android:weightSum =“1.0”
  • 将以下内容添加到第一个视图中(占60%) 高度):android:layout_weight =“。6”
  • 将以下内容添加到第二个 视图(高度为60%):android:layout_weight =“。4”

如果您以编程方式应用这些布局更改,则可能需要在进行更改后在行的根视图上调用requestLayout()。