Android:以编程方式设置视图的最小高度

Android:以编程方式设置视图的最小高度,android,android-layout,Android,Android Layout,我试图以编程方式设置imageview的最小高度,但到目前为止运气不佳。我的代码在下面 int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 160, getResources().getDisplayMetrics()); int minHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, g

我试图以编程方式设置imageview的最小高度,但到目前为止运气不佳。我的代码在下面

    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方法之后,但这也不起作用。请帮忙

谢谢

试试这个-->

或者你也可以试试-->

正如@Gustavo Baiocchi Costa在评论中指出的那样,@Ashok Damani的回答是不正确的:


这将设置高度或宽度,而不是最小宽度或高度

在Android中设置视图最小高度的正确方法

属性访问方式(在Kotlin中)

Setter方法方式:

yourView.setMinimumHeight(minHeight);
说:

设置视图的最小高度。这并不能保证观点是正确的 将能够达到该最小高度(例如,如果 父布局以较少的可用高度对其进行约束)


params和sivParams是否相同(是键入错误还是两个实际不同的变量)?另外,您是否使用了正确类型的LayoutParams?如果siv的父视图是RelativeLayout,则需要使用RelativeLayout.LayoutParams,如果是LinearLayout-LinearLayout.LayoutParams等等..很抱歉,这是一个类型错误,而且我也使用了相同的ie LinearLayout.LayoutParams供像我这样的未来读者使用:如果您在XML中设置了最小高度,似乎试图在代码中更改它是行不通的(Android 4.x测试)。如果将其从XML中删除,则可以在代码中对其进行设置,甚至可以对其进行更改(多次设置为不同的值)。实际上,imageview旁边有文本,imageview的高度将根据文本量动态更改。但是如果没有文本,我想为imageview设置一个最小高度,因为如果没有文本,那么imageview的高度将为0。这将设置高度或宽度,而不是最小宽度或高度。谢谢,但是我的imageview的高度正在动态变化,我希望有一个最小高度(如imageview高度为0时)。我已经试过了,但是imageview的高度会被固定,只是传递一个名为minHeight的变量并不意味着它正在设置视图的最小高度。
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(width , minHeight);
siv.setLayoutParams(layoutParams);
SmartImageView siv = new SmartImageView(getActivity());
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, minHeight);
siv.setLayoutParams(params);
yourView.minimumHeight = minHeight
yourView.setMinimumHeight(minHeight);