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


我试图以编程方式为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方法之后,但这也没有用。请帮忙

谢谢


3963
2018-05-28 11:26


起源

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


答案:


试试这个--->

siv.getLayoutParams().height = minHeight;

或者你也可以尝试--->

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

14
2018-05-28 11:30



实际上,我在图像视图旁边有文本,图像视图的高度将根据文本的数量动态更改。但是如果没有文字,我想为imageview设置一个最小高度,因为如果没有文字,那么imageview的高度为0 - Lalith Mohan
这设置高度或宽度而不是最小宽度或高度 - Gustavo Baiocchi Costa


SmartImageView siv = new SmartImageView(getActivity());
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, minHeight);
siv.setLayoutParams(params);

-1
2018-05-28 11:32



谢谢,但我的imageview的高度是动态变化的,我希望有一个最小高度(如图像视图高度为0时)。我已经尝试了但是imageview的高度将被修复 - Lalith Mohan
仅通过名称minHeight传递变量并不意味着它正在设置视图的最小高度。 - thedarkpassenger