2013-05-28 146 views
10

我試圖以編程方式設置imageview的最小高度,但目前爲止沒有運氣。我的代碼如下Android:以編程方式設置視圖的最小高度

int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 160, getResources().getDisplayMetrics()); 
    int minHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics()); 

    LayoutParams params = new LayoutParams(width,LayoutParams.MATCH_PARENT); 

    SmartImageView siv = new SmartImageView(getActivity()); 
    siv.setMinimumHeight(minHeight); 
    siv.setLayoutParams(sivParams); 
    siv.setAdjustViewBounds(true); 
    siv.setScaleType(ScaleType.FIT_XY); 
    siv.setImageUrl(url); 
    ll.addView(siv); 

我也試圖把setMinimumWidth方法setLayoutParams方法之後,但它還是不奏效。請幫助

感謝

+1

是PARAMS和sivParams相同(爲它是一個打字錯誤或2個實際上不同的變量)?另外,您是否使用了正確類型的LayoutParams?如果siv的父視圖是RelativeLayout,則需要使用RelativeLayout.LayoutParams,如果它是LinearLayout - LinearLayout.LayoutParams等。 – npace

+0

對不起,這是一個類型錯誤,我也使用相同的方式,即LinearLayout.LayoutParams –

+0

請注意像我這樣的未來讀者:如果你有一個minHeight設置爲XML,似乎試圖在代碼中進行更改不起作用(Android 4.x測試)。如果您從XML中刪除它,則可以將其設置爲代碼,甚至可以更改它(將多次設置爲不同的值)。 – eselk

回答

14

試試這個--->

siv.getLayoutParams().height = minHeight; 

或u還可以嘗試--->

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(width , minHeight); 
siv.setLayoutParams(layoutParams); 
+0

其實,我在imageview旁邊有一段文字,imageview的高度會根據文字的大小而動態變化。但如果沒有文本,我想爲imageview設置一個最小高度,因爲如果沒有文本,那麼imageview將有0高度 –

+3

這設置高度或寬度不是最小寬度或高度 –

-1
SmartImageView siv = new SmartImageView(getActivity()); 
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, minHeight); 
siv.setLayoutParams(params); 
+0

謝謝,但我的imageview的高度動態變化,我想有一個最低高度(如當imageview高度爲0)。我已經嘗試過了,但imageview的高度是固定的 –

+0

僅僅通過minHeight的名字傳遞一個變量並不意味着它設置了視圖的最小高度。 – thedarkpassenger

相關問題