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

22

我正在尝试以编程方式设置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);

我也尝试在setLayoutParams方法之后使用setMinimumWidth方法,但没奏效。请帮忙。

谢谢


1
params和sivParams是相同的吗(这是打字错误还是两个不同的变量)?另外,您是否使用了正确类型的LayoutParams?如果siv的父视图是RelativeLayout,则需要使用RelativeLayout.LayoutParams,如果是LinearLayout,则需要使用LinearLayout.LayoutParams等。 - npace
抱歉,那是一个类型错误,而且我还在使用相同的ie LinearLayout.LayoutParams。 - Lalith Mohan
未来的读者请注意:如果在XML中设置了minHeight,似乎尝试在代码中更改它是无效的(在Android 4.x测试中)。如果从XML中删除它,则可以在代码中设置它,甚至更改它(多次设置为不同的值)。 - eselk
2个回答

24
< p >由评论中的@ Gustavo Baiocchi Costa指出,@Ashok Damani的回答是不正确的:

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

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

属性访问方式(使用Kotlin):

yourView.minimumHeight = minHeight

Setter方法:

yourView.setMinimumHeight(minHeight);

Android文档中说:

设置视图的最小高度。不能保证该视图能够达到这个最小高度(例如,如果其父布局使用较少的可用高度对其进行限制)。


12

试试这个--->

siv.getLayoutParams().height = minHeight;

或者你也可以尝试——>

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

实际上,我有一张图片旁边的文本,而图片视图的高度将根据文本量动态改变。但是如果没有文本,我想为图片视图设置最小高度,因为如果没有文本,则图片视图将具有0高度。 - Lalith Mohan
27
这会设置高度或宽度,而不是最小宽度或高度。 - Gustavo Baiocchi Costa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接