Я включил голосовой помощник в Note 5 и пытался двигаться вперед (вверх-вниз), но он выходит из Recyclerview, когда достигает конца экрана.Поскольку в списке есть еще много элементов, поэтому он должен автоматически прокручиваться вверх.
Я наблюдал эту проблему в Samsung Note 5 и Samsung Note 9 , но он прекрасно работает в Samsung 9 и Samsung 9 + .
Я придерживаюсь целенаправленной истины в каждом элементе RecyclerView.Я использовал решение, но я не думаю, что это лучшее, что кто-либо может предложить мне, какой будет лучший подход.
Мое решение: я вручную прокручиваю список, обнаруживая момент.
RecyclerView
<RecyclerView>.setAccessibilityDelegateCompat(RVAccessibilityDelegate(<RecyclerView>, <No of item you want to scroll>))
RVAccessibilityDelegate
RecyclerViewAccessibilityDelegate(recyclerView){
private var previousItemPosition = 0
override fun onRequestSendAccessibilityEvent(host: ViewGroup, child: View, event: AccessibilityEvent): Boolean {
if (event.eventType == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED) {
if (host is RecyclerView) {
var childPosition = host.getChildAdapterPosition(child)
if (childPosition == 0 && previousItemPosition == 0) {
host.smoothScrollToPosition(1)
} else if (previousItemPosition < childPosition) {
host.smoothScrollToPosition(childPosition + scrollItem)
previousItemPosition = childPosition
} else if (previousItemPosition > childPosition) {
var scrollUpto = childPosition - scrollItem
if (scrollUpto < 0) {
scrollUpto = 0
}
if (childPosition == 0) {
host.smoothScrollToPosition(childPosition)
} else {
host.smoothScrollToPosition(scrollUpto)
}
previousItemPosition = childPosition
}
}
return true
}
return super.onRequestSendAccessibilityEvent(host, child, event)
}
}```