如何实现android中间进度条可访问性

时间:2019-01-20 21:40:57

标签: android android-progressbar android-accessibility android-a11y

我想宣布android中间进度条上的加载文本。我想为加载中间进度条时在Android设备上使用对讲服务的残疾人输出类似的内容。

  • 文件正在加载。
  • 文件正在提取。
  • 文件正在转换。
  • 文件已加载。

我检查了一下google,发现可以使用:

1)在进度栏视图上宣布为ForAccessibility。 (在我的情况下不起作用,仅在使用Handler加载时有效)

我的代码

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onResume() {
        super.onResume()
        val progressbar: ProgressBar = findViewById(R.id.testProgressBar)
        // progressbar.announceForAccessibility("My name is Neo "); // not working
        Handler().postDelayed(object : Runnable {
            override fun run() {
                progressbar.announceForAccessibility("My name is Neo ");
            }
        }, 1000)

    }

你们还有其他建议来解决这种问题吗?我不知道人们是如何在这么多地方工作的https://www.programcreek.com/java-api-examples/?class=android.view.View&method=announceForAccessibility

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以尝试礼貌的android:accessibilityLiveRegion,以确保“话语提示”不会打断已经宣布的事情:

<ProgressBar 
    android:id="@+id/testProgressBar"
    …
    android:accessibilityLiveRegion="polite" />

更多信息: Using a Live Region

答案 1 :(得分:0)

使进度条具有焦点,然后根据您的要求发送自定义内容描述。 对讲将为您处理。

public void showProgresSBarWithCustomDescription(val contentDesc) {
    progressBar.contentDescription = contentDesc
    progressBar.visibility = View.VISIBLE
}

//Add following properties to progressbar

            android:focusable="true"
            android:focusableInTouchMode="true"
            android:importantForAccessibility="yes"