您的位置:

解决IllegalArgumentException("Must pass in non-negative short dimensions, not: " + dimen)在glide出现报错

  发布时间:2023-01-26 04:30:02
Glide在加载图片时需要正整数作为图片的宽度和高度,如果传递了负数,就会抛出此异常。可以在传递给Glide的参数之前对它们进行检查,然后确保它们都是正整数。一种可行的解决方法是在调用Glide加载图片之前进行如下检查还可以使用Math.max来代替上述if语句,将负数转换为这样就可以避免传入负数,解决这个错误了。

报错的原因

在Java中使用Glide库时出现"IllegalArgumentException("Must pass in non-negative short dimensions, not: " + dimen);"的错误,是因为你在加载图片时传递了一个负数作为图片的宽度或高度。 Glide在加载图片时需要正整数作为图片的宽度和高度,如果传递了负数,就会抛出此异常。

如何解决

解决这个问题的方法是确保在使用Glide加载图片时,传递的宽度和高度都是正整数。可以在传递给Glide的参数之前对它们进行检查,然后确保它们都是正整数。

一种可行的解决方法是在调用Glide加载图片之前进行如下检查:


int width = ...;
int height = ...;
if (width < 0) width = 0;
if (height < 0) height = 0;

Glide.with(context)
        .load(imageUrl)
        .override(width, height)
        .into(imageView);

还可以使用Math.max(0, width)来代替上述if语句,将负数转换为0。


int width = ...;
int height = ...;
Glide.with(context)
        .load(imageUrl)
        .override(Math.max(0, width), Math.max(0, height))
        .into(imageView);

这样就可以避免传入负数,解决这个错误了。

使用例子

是的,下面是一个使用Glide加载图片并确保宽度和高度都是正整数的示例:


ImageView imageView;
int width = ...;
int height = ...;
String imageUrl = ...;

Glide.with(context)
        .load(imageUrl)
        .override(Math.max(0, width), Math.max(0, height))
        .into(imageView);

这里使用了 Math.max(0, width)和Math.max(0, height)来确保宽度和高度都是正整数。

当然, 也可以使用之前提到的if语句,来确保宽度和高度都是正整数。


ImageView imageView;
int width = ...;
int height = ...;
String imageUrl = ...;
if (width < 0) width = 0;
if (height < 0) height = 0;

Glide.with(context)
        .load(imageUrl)
        .override(width, height)
        .into(imageView);

这样就可以避免传入负数,解决这个错误了。