如何解决在RecyclerView中滚动只能在一个方向上向左工作
我有一个RecyclerView
:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/chartRecyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:overScrollMode="never"
android:layout_marginHorizontal="@dimen/spacing_xs"
app:layout_constraintTop_toTopOf="@+id/line1"
app:layout_constraintBottom_toBottomOf="@+id/bottomLine"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
与LinearLayoutManager
:
chartRecyclerView.run {
layoutManager = LinearLayoutManager(
binding.сhartRecyclerView.context,RecyclerView.HORIZONTAL,false
)
adapter = ChartAdapter(this@Chart)
}
我正在屏幕上显示5个RecyclerView项目,我希望用户单击的项目居中。为此,我使用以下代码:
override fun onChartColumnClicked(item: SurveyChartColumnData) {
val items = adapterItems.value ?: return
val newPosition = items.indexOf(item)
Logger.info("newPosition: $newPosition")
if (newPosition in items.indices) {
val oldSelectedItemPosition = items.indexOfFirst { it.isSelected }
val oldSelectedItem = items.first { it.isSelected }
if (oldSelectedItemPosition == newPosition) {
return
}
oldSelectedItem.isSelected = false
item.isSelected = true
when {
newPosition < CENTRAL_POSITION -> {
Logger.info("scrollToPosition: 0")
binding.chartRecyclerView.scrollToPosition(0)
}
else -> {
Logger.info("scrollToPosition: ${newPosition - 2}")
binding.chartRecyclerView.scrollToPosition(newPosition - 2)
}
}
}
}
存在以下问题:仅当新选定元素的adapterPosition小于旧选定元素的adapterPosition时,滚动才起作用(即,滚动仅向左方向起作用)。这些问题的原因可能是什么,如何解决?
UPD
但是如果我替换
binding.сhartRecyclerView.scrollToPosition(newPosition - 2)
进入
(binding.сhartRecyclerView.layoutManager as LinearLayoutManager).scrollToPositionWithOffset(newPosition - 2,0)
所有作品都像魅力!但我仍然不明白其原因...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。