Android调整ImageView大小会导致View容器的大小调整

时间:2015-05-07 20:35:04

标签: android android-listview imageview layoutparams

在我的应用程序中,我在列表的每一行都有一个带有ImageView的ListView。此ImageView中包含来自Web的图像。当我下载第一个图像时,我计算位图的高度,因为我必须根据此位图的高度设置列表项的高度。我没有占位符,因此我选择此方法以避免在填充图像时展开每个列表项。

我面临的问题是当我尝试调整ImageView的大小时,实际上调整了整个视图组的大小,在这种情况下是LinearLayout。

以下是一些代码:

列出项目布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginBottom="5dp"
    android:layout_marginTop="5dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="4dp"
        android:paddingTop="8dp"
        android:layout_marginLeft="32dp"
        android:layout_marginStart="32dp"
        android:textSize="30sp" />

    <ImageView
        android:id="@+id/photo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true" />

</LinearLayout>

执行调整大小的方法:

private void resizeImageContainer(ViewHolder viewHolder, int height) {
    LinearLayout.LayoutParams imageLayoutParams = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT, height);
    viewHolder.photo.setLayoutParams(imageLayoutParams);
}

1 个答案:

答案 0 :(得分:1)

我想知道为什么你选择使用LinearLayout创建一个列表而不是使用ListView(http://developer.android.com/reference/android/widget/ListView.html)我之前使用过它们,并且它们在创建列表时更加可靠#39;不确定列表中有多少项。使用ListView时,您还可以自定义每行的确切大小,这样您就不必为每个元素动态更改行大小。

另外,根据您的描述判断,您似乎想要将图像放在Textview的一侧。如果是这样的话,我以前自己偶然发现了这个问题,你可以在不使用ImageView的情况下实现这一点。 有关详细信息,请参阅以下链接: http://developer.android.com/reference/android/widget/TextView.html#attr_android:drawableLeft