在我的應用程序中,我有一個ListView與列表中的每一行ImageView。這個ImageView由來自網絡的圖像組成。當我下載第一張圖片時,我計算了位圖的高度,因爲我必須根據此位圖的高度來設置列表項的高度。我沒有佔位符,所以我選擇這種方法來避免在圖像填充時擴展每個列表項。Android的調整大小的ImageView導致調整大小的視圖容器
我面臨的問題是當我嘗試調整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);
}
也許你應該嘗試chagne它的大小是這樣的:vievHolder.photo.getLayoutParams()高度=高度; vievHolder.photo.requestLayout(),只是爲了確保這個方法在這裏不是問題 –
嘗試在另一個LinearLayout中包裝imageView。適配器在保持沒有嵌套LInearLayouts的父類的正確參數方面做得不錯。 –