Android ImageView不符合maxWidth和height

Android ImageView不符合maxWidth和height,android,Android,我已经通过代码创建了一个ImageView,我希望它的最大大小为24x24dp。但是setMaxHeight/Width不起作用。我使用的图像是可绘制的svg,大小为40x40dp 我还尝试使用imageView.setMinimumHeight/Width和 没有任何效果 在这里,我正在创建ImageView: 我将它与一个RelativeLayout一起使用,它也是用这样的代码制作的: 如果图像和imageview具有相同的纵横比。你试过了吗 imageview.setScaleTypeIm

我已经通过代码创建了一个ImageView,我希望它的最大大小为24x24dp。但是setMaxHeight/Width不起作用。我使用的图像是可绘制的svg,大小为40x40dp

我还尝试使用imageView.setMinimumHeight/Width和

没有任何效果

在这里,我正在创建ImageView:

我将它与一个RelativeLayout一起使用,它也是用这样的代码制作的:


如果图像和imageview具有相同的纵横比。你试过了吗


imageview.setScaleTypeImageView.ScaleType.CENTER\u在添加到视图组之前,需要指定imageview的布局参数

ImageView imageView = new ImageView(this);
imageView.setMaxHeight(getTypedValueInDP(20));
imageView.setMaxWidth(getTypedValueInDP(20));
imageView.setAdjustViewBounds(true);
imageView.setImageDrawable(context.getResources().getDrawable(drawable));
RelativeLayout.LayoutParams layoutParams =
    new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);
imageView.setLayoutParams(layoutParams);

RelativeLayout toastLayout = new RelativeLayout(this);
toastLayout.addView(imageView);

填充似乎弄乱了setMaxWidth。请确保在两侧提供的填充不得等于或大于setMaxWidth参数。在您的代码中,您将填充到左侧和右侧。因此,改变:

imageView.setMaxWidth(getTypedValueInDP(20));


我不能保证它有,因为用户有能力在它工作的ImageView中更改图像。但我也试着把imageView.setAdjustViewBoundstrue;并删除任何与LayoutParams相关的代码,它仍然worked@Muddz凉的我在此基础上添加了setAdjustViewBounds。有问题。如果imageView.setMaxWidthgetTypedValueInDP20;当屏幕和ImageView消失时,它会使相对的父布局的高度变长!但是如果没有maxWidth,它的行为应该是超出范围的。maxWidth将不会被设置。请查看此屏幕截图:@Muddz请发布没有maxWidth时它的外观的屏幕截图。@blizzard刚刚用另一个答案解决了它。是填充导致maxWidth变得疯狂
    RelativeLayout toastLayout = new RelativeLayout(context);
    toastLayout.setBackground(getBLLShape());
    toastLayout.addView(getImageView());
ImageView imageView = new ImageView(this);
imageView.setMaxHeight(getTypedValueInDP(20));
imageView.setMaxWidth(getTypedValueInDP(20));
imageView.setAdjustViewBounds(true);
imageView.setImageDrawable(context.getResources().getDrawable(drawable));
RelativeLayout.LayoutParams layoutParams =
    new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);
imageView.setLayoutParams(layoutParams);

RelativeLayout toastLayout = new RelativeLayout(this);
toastLayout.addView(imageView);
imageView.setMaxWidth(getTypedValueInDP(20));
imageView.setMaxWidth(2* left + getTypedValueInDP(20));