2013-05-28 92 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

相关问题