Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何避免所选列表项移动到列表顶部?_Android_Android Recyclerview_Scrolltop - Fatal编程技术网

Android 如何避免所选列表项移动到列表顶部?

Android 如何避免所选列表项移动到列表顶部?,android,android-recyclerview,scrolltop,Android,Android Recyclerview,Scrolltop,我有一个包含50个项目的RecyclerView。我将使用遥控器上下按钮逐一导航。使用recyclerview.scrollToPosition(position)方法选择任何项目(例如25)。选择此选项后,项目将自动移动到列表的顶部位置。我不想让我所选的物品占据位置的顶部。我想成为同一个被选中的职位。我如何做到这一点 谢谢, K.Rajesh如果您使用的是一个上下控件,它与RecyclerView的实际ViewHolder完全分离,您可以使用RecyclerView.scrollBy(x,y)

我有一个包含50个项目的RecyclerView。我将使用遥控器上下按钮逐一导航。使用
recyclerview.scrollToPosition(position)
方法选择任何项目(例如25)。选择此选项后,项目将自动移动到列表的顶部位置。我不想让我所选的物品占据位置的顶部。我想成为同一个被选中的职位。我如何做到这一点

谢谢,
K.Rajesh

如果您使用的是一个上下控件,它与
RecyclerView
的实际
ViewHolder
完全分离,您可以使用
RecyclerView.scrollBy(x,y)

假设所有项目的大小相同,您甚至不必考虑“选定项目”索引,因为项目高度不可能变化。只需在第一个位置使用视图,并在每次单击向上或向下按钮时滚动正高度或负高度

如果您使用的是
LinearLayoutManager
GridLayoutManager
,则Kotlin中的一个部分示例类似于此:

    view.findViewById<Button>(R.id.up).setOnClickListener {
        val temp = recyclerView.layoutManager.findViewByPosition((recyclerView.layoutManager as LinearLayoutManager).findFirstCompletelyVisibleItemPosition())
        temp?.let {
            recyclerView?.scrollBy(0, -it.height)
        }
    }

    view.findViewById<Button>(R.id.down).setOnClickListener {
        val temp = recyclerView.layoutManager.findViewByPosition((recyclerView.layoutManager as LinearLayoutManager).findFirstCompletelyVisibleItemPosition())
        temp?.let {
            recyclerView?.scrollBy(0, it.height)
        }
    }
view.findviewbyd(R.id.up).setOnClickListener{
val temp=recyclerView.layoutManager.findViewByPosition((recyclerView.layoutManager作为LinearLayoutManager.findFirstCompletelyVisibleItemPosition())
临时工?让我来{
recyclerView?.scrollBy(0,-it.高度)
}
}
view.findViewById(R.id.down).setOnClickListener{
val temp=recyclerView.layoutManager.findViewByPosition((recyclerView.layoutManager作为LinearLayoutManager.findFirstCompletelyVisibleItemPosition())
临时工?让我来{
recyclerView?.scrollBy(0,它的高度)
}
}

另外,请注意,如果您在
回收视图
中添加了
项目装饰
s,则在进行滚动浏览时需要考虑这些额外的间距。

请共享您的代码您的所有项目是否大小相同,或变量相同?@淹没是的,我的列表项目中只有一个文本字段。这不起作用。如果我使用smoothScrollToPosition(位置),它会滚动并将第20项移动到第一个可见项。但我不想让它动起来。如何解决这个问题。我的答案不包括使用滚动到某个位置的解决方案,它只使用滚动方式。。。