Recyclerview
的 layout
布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<ImageView
android:id="@+id/image"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
tools:src="@drawable/background"
/>
适配器代码如下:
public class ImageRecyclerViewAdapter extends RecyclerView.Adapter<ImageViewHolder> {
private final Activity activity;
private final List<String> images;
public ImageRecyclerViewAdapter(Activity activity, List<String> images) {
this.activity = activity;
this.images = images;
}
@NonNull
@NotNull
@Override
public ImageViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
// 注意第三个参数;仅返回视图,不附加视图到parent
View view = inflater.inflate(R.layout.recyclerview_item_image, parent, false);
return new ImageViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull @NotNull ImageViewHolder holder, int position) {
String src = this.images.get(position);
ImageView imageView = holder.getImageView();
// 填充src
Glide.with(this.activity.getBaseContext())
.load(src)
.into(imageView);
}
@Override
public int getItemCount() {
return this.images.size();
}
}
通过上述代码渲染视图图片不显示!如果给图片布局设置一个高度又可以正常显示,这是为什么?
可能是因为你的 ImageView 在布局文件里的 layout_height 设置成了 wrap_content。在加载图片的时候,因为图片还没有被加载进来,系统不知道图片的大小,所以没法正测量到 ImageView 的高度。
你可以指定一个高度,android:layout_height="200dp"。或者用占位符:
还有一种方法就是动态设置ImageView的高度: