如何在TextView中正确指定算法表达式以供TalkBack识别



对于健身应用程序,我希望在智能手表模拟器上显示一条消息,该消息可以由TalkBack功能读取,并且当TalkBack突出显示TextView时(当说话时(用户可以理解。+符号有几个不同的含义,例如加号、加号、正数、加号等。在这种情况下,我希望TalkBack能说出"加号"一词。这是Java可以提供的吗?当字符串本地化时,不同的语言也需要理解这一点。

预期结果

显示器上的文本:Number of steps: 4↑ (2↑ + 2↑)

反馈应该说:;4向上(2向上+2向上(";

当前代码

val imageGetter = Html.ImageGetter { name ->
val resId = if (name == "arrow") { R.drawable.ic_arrow_up }
else { throw IllegalArgumentException("what the heck is $arrow") }
ResourcesCompat.getDrawable(resources, resId, requireActivity().theme)?.apply {
setBounds(0, 0, intrinsicWidth, intrinsicHeight)
}
}
val txtNumberOfSteps = getString(R.string.number_of_steps)
val txt4 = String.format("%d", 4) 
val txt2 = String.format("%d", 2) 
val htmlTxtSteps = "$txtNumberOfSteps $txt4 <img src="arrow"/> ($txt2 <img src="arrow"/> + $txt2" <img src="arrow"/>)"
val txtStepsClimbed = Html.fromHtml(htmlTxtSteps, Html.FROM_HTML_MODE_COMPACT, imageGetter, null)
myTv.setText = txtStepsClimbed

strings.xml

<string name="number_of_steps">Number of steps: </string>

每次值更改时,尝试更新TextView的contentDescription

例如,对于

显示的文本:Number of steps: 4↑ (2↑ + 2↑)

您可以调用

myTv.contentDescription = "Four up times two up plus two up"

我可能曲解了括号,但你明白要点了。简单地说,设置一个字符串,准确地说明您希望TalkBack功能向您读回的内容。

希望这能有所帮助!

最新更新