是否可以根据屏幕宽度使用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))
在开发 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))