解决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);
这样就可以避免传入负数,解决这个错误了。