Android RecyclerView GridLayoutManager之间的随机间距

Android RecyclerView GridLayoutManager之间的随机间距,android,android-recyclerview,Android,Android Recyclerview,我正在开发一个小应用程序来显示用户DCIM文件夹中的所有图像,到目前为止,除了一个小问题外,所有图像都可以正常工作。如下图所示,RecyclerView增加了行之间的间距。在谷歌搜索了大约一个小时却什么也没找到之后,我希望你们中的一个能帮上忙 以下是ViewAdapter的代码: class BackgroundsViewAdapter( var images: List<File>, private val context: Context ) : Recycler

我正在开发一个小应用程序来显示用户DCIM文件夹中的所有图像,到目前为止,除了一个小问题外,所有图像都可以正常工作。如下图所示,RecyclerView增加了行之间的间距。在谷歌搜索了大约一个小时却什么也没找到之后,我希望你们中的一个能帮上忙

以下是ViewAdapter的代码:

class BackgroundsViewAdapter(
    var images: List<File>,
    private val context: Context
) : RecyclerView.Adapter<BackgroundsViewHolder>() {
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BackgroundsViewHolder {
        val view = ImageView(parent.context)
        view.bottom = 0
        view.top = 0
        return BackgroundsViewHolder(view)
    }

    override fun getItemCount(): Int {
        return images.size
    }

    override fun onBindViewHolder(holder: BackgroundsViewHolder, position: Int) {
        Picasso
            .get()
            .load(images[position])
            .centerCrop()
            .resize(300, 300)
            .into(holder.imageView)
    }
}
class BackgroundsViewAdapter(
var图像:列表,
私有val上下文:上下文
):RecyclerView.Adapter(){
override fun onCreateViewHolder(父级:ViewGroup,viewType:Int):BackgroundsViewHolder{
val view=ImageView(parent.context)
view.bottom=0
view.top=0
返回背景视图(视图)
}
重写getItemCount():Int{
返回图像大小
}
覆盖BindViewHolder(holder:BackgroundsViewHolder,position:Int){
毕加索
.get()
.加载(图像[位置])
.centerCrop()
.调整大小(300300)
.into(holder.imageView)
}
}
RecyclerView的定义如下:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/backgrounds_view"
            android:scrollbars="vertical">

    </android.support.v7.widget.RecyclerView>
</android.support.design.widget.CoordinatorLayout>

viewManager = GridLayoutManager(this, 4)
viewAdapter = BackgroundsViewAdapter(ArrayList(), this)

recyclerView = findViewById<RecyclerView>(R.id.backgrounds_view).apply {
    setHasFixedSize(true)
    layoutManager = viewManager
}


我建议不要硬编码宽度和高度为300。计算设备大小并将其除以网格大小,在本例中为4。
将宽度和高度也设置为IamgeView。

发布项目视图布局代码please@Sdghasemi它发布在第一个代码段中。我用代码初始化了它,它确实起作用了。你知道为什么它不能与硬编码的值一起工作吗?如果图像大小不正确,图像的裁剪量会超过它看起来应该是正方形的程度。在使用视图布局时,我建议在手机开发人员设置中启用布局边界,以便更好地了解每个视图占用的空间。