在我的应用程序中,我在列表的每一行都有一个带有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);
}
答案 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