解决方案是:在adapter里获取了item的高度做了一个数值范围内(设置高度的下限和高度的上限,这里设置的高度是最低值加上一个范围内的随机数的值),这样就ok了,这里的适配器集成了万能的适配器BRVAH
public class BRVAHImgAdapter extends BaseQuickAdapter<ImgEntryResponse, BaseViewHolder> {
private final static String IMG_URL = CommonServerUrl.IMG_SERVER_URL;//最新地址
List<ImgEntryResponse> mBRVAHImgObjList;
//构造
public BRVAHImgAdapter(int layoutResId, List<ImgEntryResponse> data) {
super(layoutResId, data);
}
@Override
protected void convert(@NonNull BaseViewHolder helper, ImgEntryResponse item) {
//helper.setText(R.id.id_text, "第" + helper.getAdapterPosition() + "个数据");
ImageView img_view = helper.getView(R.id.iv_indexImg_brvah);
String url = IMG_URL + item.getPT();
Glide.with(mContext).load(url)
.placeholder(R.drawable.prestrain_icon)//加载占位图/图片未加载,提前展示给用户
// .skipMemoryCache(true)
// .diskCacheStrategy(DiskCacheStrategy.NONE)
.fitCenter()
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
Log.d("Wain", "BRVAH成功le加载失败 errorMsg:" + (e != null ? e.getMessage() : "null"));
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
Log.d("BRVAH成功le", "BRVAH成功le Drawable Name:" + resource.getClass().getCanonicalName());
return false;
}
}).into(img_view);
// helper.setText(R.id.tv_imgName, item.getD());
int position = helper.getLayoutPosition();
Log.d("当前条目的位置++", position + "");
//获取item宽度,计算图片等比例缩放后的高度,为imageView设置参数
ViewGroup.LayoutParams params = img_view.getLayoutParams();
WindowManager wm= (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
//设置图片的相对于屏幕的宽高比
params.width = width / 2;
params.height = (int) (260 + Math.random() * 330);//设置随机高度
img_view.setLayoutParams(params);
}
}