Android - TalkBack 可访问性侧重于 Recyclerview 中的滑动删除按钮

Posted

技术标签:

【中文标题】Android - TalkBack 可访问性侧重于 Recyclerview 中的滑动删除按钮【英文标题】:Android - TalkBack accessibility focus on swipe to delete button in Recycleview 【发布时间】:2021-03-02 04:10:29 【问题描述】:

借助 on 的帮助,我在回收视图中绘制了滑动删除按钮(RectF)

 val oBackground = RectF(itemView.right.toFloat() - buttonWidth, itemView.top.toFloat(), itemView.right.toFloat(), itemView.bottom.toFloat())
    paint.color = ContextCompat.getColor(viewHolder.itemView.context, R.color.color_cc0013)
    canvas.drawRect(optionsBackground, paint)

    // Displays delete drawable within specified bounds
    val deleteBtmp: Bitmap = getBitmapFromVectorDrawable(viewHolder.itemView.context, R.drawable.vector_delete)
    val destination = RectF(
        itemView.right.toFloat() - buttonWidth + paddingLeft,
        itemView.top.toFloat() + paddingTop,
        itemView.right.toFloat() - paddingRight,
        itemView.bottom.toFloat() - paddingBottom
    )
    canvas.drawBitmap(deleteBtmp, null, destination, paint)

如何在 Recycleview 中将 TalkBack 辅助功能焦点设置为滑动删除按钮(deleteBtmp)?

【问题讨论】:

您找到解决方案了吗? 【参考方案1】:

您的删除按钮就是我们所说的“虚拟视图”。您需要使用 AccessibilityNodeProvider 公开它。

ExploreByTouchHelper 是一个旨在简化流程的包装器。

更简单的不过,将您的 UI 调整为使用常规按钮,并利用内置的可访问性报告。

【讨论】:

感谢@Phil Weaver 的关注。据我了解,ExploreByTouchHelper 正在处理客户意见。但就我而言,当用户对任何项目执行向左滑动操作时,我在画布上绘制了一个 RecF。请指导我在这种情况下如何使用 ExploreByTouchHelper 或 AccessibilityNodeProvider。如果您有任何样品,请分享 在画布上绘制一个按钮几乎就是我们所说的自定义视图。这感觉类似于 RadialTimePickerView:android.googlesource.com/platform/frameworks/base/+/master/core/…

以上是关于Android - TalkBack 可访问性侧重于 Recyclerview 中的滑动删除按钮的主要内容,如果未能解决你的问题,请参考以下文章

TalkBack 可访问性 StaggeredGridLayoutManager 焦点顺序错误

Android TalkBack 和片段堆栈

如何将视图设置为可访问性按钮之类的控制器

宣布一个带有 Talkback 的 TextView

Flutter:如何将可访问性焦点集中到自定义应用栏

Xamarin.Forms android - 调整控件大小以考虑可访问性设置