gpt4 book ai didi

android - 选中时如何将项目设置为 Recycler View 的中心

转载 作者:可可西里 更新时间:2023-11-01 19:06:36 26 4
gpt4 key购买 nike

我正在使用 RecyclerView 水平显示项目。我想像这样将所选项目设置为 View 的中心

enter image description here .

我是这样做的:

LinearLayoutManager layoutManager
= new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(layoutManager);

最佳答案

要从 RecyclerView 获取屏幕中间的项目,您可以将 OnScrollListener 附加到 RecyclerView,在监听器中您应该获取当前项目的位置,然后您应该检查给定项目的区域是否在屏幕中间。

Kotlin 代码示例:

// Attach OnScrollListener to your RecyclerView
addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
recyclerView.post {
selectMiddleItem()
}
}
})
// implementation of method that is called from OnScrollListener
private fun selectMiddleItem() {
val firstVisibleIndex = layoutManager.findFirstVisibleItemPosition()
val lastVisibleIndex = layoutManager.findLastVisibleItemPosition()
val visibleIndexes = listOf(firstVisibleIndex..lastVisibleIndex).flatten()

for (i in visibleIndexes) {
val vh = findViewHolderForLayoutPosition(i)
if (vh?.itemView == null) {
continue
}
val location = IntArray(2)
vh.itemView.getLocationOnScreen(location)
val x = location[0]
val halfWidth = vh.itemView.width * .5
val rightSide = x + halfWidth
val leftSide = x - halfWidth
val isInMiddle = screenWidth * .5 in leftSide..rightSide
if (isInMiddle) {
// "i" is your middle index and implement selecting it as you want
// optionsAdapter.selectItemAtIndex(i)
return
}
}
}

结果你应该得到这样的东西:

enter image description here

关于android - 选中时如何将项目设置为 Recycler View 的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34788106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com