我希望辅助功能停止遍历回收查看项目时,下一个项目不在屏幕视图。
当向右滑动(下一个元素)时,它的工作方式如上所述。如果没有可见的回收器视图项目,它将转到下一个不在回收器视图中的辅助功能元素
当向右滑动时(前一个元素),它不会按预期工作。如果没有可见项目。回收器视图向左滚动以显示更多可见项目。由于回收器视图具有“无限”项目列表,因此无法遍历出回收器视图。
video reference
重新创建
- 激活对讲可访问性
- 向左或向右滑动以遍历辅助功能元素树
代码
生成分级
//enable view binding
buildFeatures {
viewBinding true
}
活动_主要.xml
<?xml version="1.0" encoding="utf-8"?\>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00FFFF"
android:importantForAccessibility="yes"
android:focusable="true"
android:orientation="vertical"\>
<TextView
android:textSize="30sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusableInTouchMode="true"
android:importantForAccessibility="yes"
android:text="TITLE"
android:layout_gravity="center" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusableInTouchMode="true"
android:descendantFocusability="beforeDescendants"
android:orientation="horizontal"
android:importantForAccessibility="yes"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_blank" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NEXT ITEM"
android:focusableInTouchMode="true"
android:textColor="@color/teal_700"
android:background="@color/black"
android:layout_gravity="center"
android:layout_marginVertical="100dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/blankView" />
</LinearLayout\>
主要活动.kt
class MainActivity : AppCompatActivity() {
lateinit var binding : ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
with(binding) {
recyclerView.adapter = Adapter()
val number: Int = Int.MAX_VALUE / 3 / 2
recyclerView.scrollToPosition(number)
}
}
}
class Adapter : RecyclerView.Adapter<Adapter.ViewHolder>() {
val noOfItems = 3
class ViewHolder(val binding: ItemBlankBinding) : RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(ItemBlankBinding.inflate(LayoutInflater.from(parent.context),parent, false))
}
override fun getItemCount(): Int {
return Integer.MAX_VALUE;
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val index = position % noOfItems
with(holder.binding) {
textView.text = index.toString()
root.contentDescription = "$index"
}
}
}
1条答案
按热度按时间vmdwslir1#
标题是你的朋友,如果你确保你的内容在
recylerview
下面有一个标题,人们可以改变他们的粒度为标题(三个手指水平滑动),然后使用粒度(上下滑动)跳过。我今天published a blog on Android headings了,但是如果你想快点,我上传了一个video for you demonstrating how to use headings
记住,标题是API 28之后的内容,如果您支持的内容较少,您可能需要创建某种跳过操作-您可以在“recyclerview”中添加一个可访问性操作,跳过列表并专注于下一个元素。
还要记住,用户可能无论如何都可以使用explore by touch来克服
recyclerview
。这两个解决方案都没有处理运动障碍或使用开关访问,但老实说,行动的例子是足够强大的工作,它将需要谷歌表面的行动,这些用户-所以我不认为这是对开发人员。