对于健身应用程序,我希望在智能手表模拟器上显示一条消息,该消息可以由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功能向您读回的内容。
希望这能有所帮助!