我有從URL填充的ImageView。當圖像進入時,我使用「centerInside」策略對其進行縮放,這很好,我使用「adjustViewBounds」將ImageView綁定到它。動態覆蓋ImageView minHeight
在我下載圖像之前,我不知道ImageView的尺寸。但是,我需要顯示一個合理大小的佔位符。所以我輸入了「minHeight = 150dp」的顏色背景。
<ImageView
android:id="@+id/leadImageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="150dp"
android:background="@color/color_primary"
android:adjustViewBounds="true"
android:scaleType="centerInside" />
現在,這有一個後果是,如果下載的圖像將150小於DP的ImageView的仍然會佔據150dp,我不想要的。
因此,我曾嘗試是建立一個派生的ImageView類,覆蓋了minHeight如果繪製的是已經存在,就像這樣:
class SomeImageView extends ImageView {
protected int getSuggestedMinimumHeight() {
if (getDrawable() != null)
return 0;
return super.getSuggestedMinimumHeight();
}
}
我做到了,在不同的變化,但似乎getDrawable()是在ImageVew中確實存在時爲null。沒有潛入ImageView的內部機制,很難猜測它爲什麼如此。
也許有人會建議另一種方法或解決方法,以便在ImageView上設置drawable時將minHeight替換爲0。