是否可以根据屏幕宽度使用gridLayoutManager调整recyclerview的行数和列数?
Posted
技术标签:
【中文标题】是否可以根据屏幕宽度使用gridLayoutManager调整recyclerview的行数和列数?【英文标题】:Is it possible to adjust the number of rows and columns of recyclerview using gridLayoutManager according to the screen width? 【发布时间】:2020-10-25 09:33:21 【问题描述】:在开发 android 应用的过程中,发生了向用户显示项目列表的事情。如果你是竖着看手机,行数是没有限制的,但是如果你是横着看,你想创建一个可以根据宽度调整列数的功能。这是我目前使用的代码。
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
经理,你是怎么做到的?
【问题讨论】:
【参考方案1】:您可以将整数资源文件添加到包含 spanCount
值的不同变体的 res/values 中,您希望针对不同的屏幕宽度进行更改。
右键单击 res/values > New > Values Resource File > 为文件选择一个名称 > 选择 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))
【讨论】:
以上是关于是否可以根据屏幕宽度使用gridLayoutManager调整recyclerview的行数和列数?的主要内容,如果未能解决你的问题,请参考以下文章