gpt4 book ai didi

android-recyclerview - Recyclerview 中的 Android 辅助功能语音助手问题

转载 作者:行者123 更新时间:2023-12-02 04:22:56 25 4
gpt4 key购买 nike

我在 Note 5 中打开了我的语音助手并尝试向前(从上到下)移动,但是当它到达屏幕末尾时它会退出 Recyclerview。
由于列表中有更多项目,因此它应该自动向上滚动。
我在 中发现了这个问题三星 Note 5 和三星 Note 9 但它在 中工作正常三星 9 和三星 9+ .
我在 RecyclerView 的每一项中都保持了 focusable true。
我已经使用了一种解决方案,但我认为这不是最好的解决方案,任何人都可以建议我最好的方法是什么。
我的解决方案:我通过检测时刻手动滚动列表。
回收器 View <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)
}
}```





最佳答案

代码的简化版本:

recyclerView.setAccessibilityDelegateCompat(object : 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) {
val childPosition = host.getChildAdapterPosition(child)
if (previousItemPosition < childPosition) {
host.smoothScrollToPosition(childPosition + 1)
} else if (previousItemPosition > childPosition) {
host.smoothScrollToPosition(Math.max(0, childPosition - 1))
}
previousItemPosition = childPosition
}
return true
}
return super.onRequestSendAccessibilityEvent(host, child, event)
}
})

关于android-recyclerview - Recyclerview 中的 Android 辅助功能语音助手问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58092889/

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