是否可以根据屏幕宽度使用gridLayoutManager调整recyclerview的行数和列数?

Is it possible to adjust the number of rows and columns of recyclerview using gridLayoutManager according to the screen width?

在开发 Android 应用程序的过程中,发生了向用户显示项目列表的事情。如果你是垂直看手机phone,行数没有限制,但如果你是水平看,你想创建一个函数,允许你根据宽度调整列数。这是我目前使用的代码。

class MainActivity : AppCompatActivity() {
    var array: ArrayList<String>? = null
    
    override fun onCreate(savedInstanceState: Bundle?) {
        ...
        ...
        recyclerView.layoutManager = GirdLayoutManager(this, 2)
        recyclerView.setHasFixedSize(true)
        recyclerView.adapter = MyAdapter(array!!)
    }
}

既然spanCount的值设置为2,当然知道列数设置为2了,我只是想要显示的itemView的宽度根据移动宽度适当调整。有什么解决办法吗?

如果您需要自定义 GridLayout 经理,如何实现?

您可以将整数资源文件添加到 res/values 中,其中包含您希望针对不同屏幕宽度而变化的 spanCount 值的不同变体。

右键单击 res/values > 新建 > 值资源文件 > 为文件选择一个名称 > select Screen Width qualifier 并在 dp 中设置屏幕宽度值

然后加上一个整数值

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="span">2</integer>
</resources>

针对您希望跨度变化的不同屏幕宽度重复此操作。当然,创建与您未提及的任何其他屏幕宽度相匹配的默认资源文件(未识别任何限定符)。

并构建recyclerView span获取该资源,它会根据屏幕宽度自动获取合适的资源值:

recyclerView.layoutManager = GirdLayoutManager(this, resources.getInteger(R.integer.span))