2016-07-28 48 views
0

我有從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。

回答

1

一旦您知道實際的圖像尺寸,您應該能夠在代碼中以編程方式更改minHeight屬性。 ImageView繼承View類的方法setMinimumHeight(int)

Android Docs - View