简短版本:使用 TalkBack 手势导航到 RecyclerView 会迫使您在继续之前滑动每个项目,这正常吗?是否有一种标准方法可以导航到下一个元素?
我试图让辅助功能在我正在开发的应用程序中顺利运行,但我遇到了部分用户界面的问题。我使用的 RecyclerViews 大小使您一次只能看到一个项目,对齐到中心,这样您就可以滑动以更改范围内的当前值。它基本上是NumberPicker方法,但直接在 UI 中,而不是单独的对话框。
问题是通过 UI 进行滑动手势(默认线性导航),一旦它落在 RecyclerView 上,它就会从当前项目开始,然后导航列表中的每个项目。它不会退出 RecyclerView,直到它到达最后一个项目并且无处可去。
我的问题是,这正常吗?我是 TalkBack 新手,无法找到有关每种情况下预期内容的详细信息。我知道我的情况有点不寻常(因为导航 RecyclerView 隐式意味着更改当前项目),但只是被困在列表中,直到您浏览每个项目似乎是一种非常奇怪的导航方式。
我知道有一些解决方案,例如添加导航标题等(这就是 Play 商店似乎通过“无限”水平滚动应用程序选择来处理此问题的方式),但我只是想检查一下我是否遗漏了某些内容。当您点击 RecyclerView 上/外部时,TalkBack 会宣布“在列表中”和“在列表外”,所以似乎也应该有一种方法可以通过手势显式地进出……?用户是否习惯切换到控件或标题导航来执行此操作?
谢谢!我真的想让这个对每个人都适用,但很难知道我是否做错了什么,或者我是否只是遇到了标准组件的限制
任何人都可以帮我解决这个问题吗?在我的片段中 supportFragmentManager.commit{} 不起作用。Android Studio 没有意识到这一点,我不知道该怎么办。我在 kotlin 项目中工作
据我所知,任何带有 ID 的 XML 元素都应该通过视图绑定自动拉入活动类。但是,Android Studio 不断提示我的按钮可以为 null,并且需要具有?.或!!.进行编译。
如果我用 断言不可为 null !!.,它实际上会导致按钮出现运行时 NullPointerException。
为什么视图绑定无法识别我的按钮的类型和存在?
我的主要活动代码在这里:
package com.stevenswang.ageinminutes
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.stevenswang.ageinminutes.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.btnSelectDate.setOnClickListener {...} //this line gives the compiler error in the title
}
}
Run Code Online (Sandbox Code Playgroud)
此处应用程序的 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="@color/backgroundColor"
android:orientation="vertical"
android:gravity="center_horizontal"
android:padding="16sp"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content" …Run Code Online (Sandbox Code Playgroud)