TextView setContentDescription无法正常工作

时间:2019-07-16 22:05:42

标签: java android textview accessibility

我正在尝试在contentDescription上设置TextView,但TalkBack似乎没有宣布它。 “话语提示”仅能表达文字内容。

textView.setText("2d 9h left");
textView.setContentDescription("2days 9hours left");

上面的第二行无效。话语提示说:“还剩2d 9h”。

我也尝试了以下方法:

    ViewCompat.setAccessibilityDelegate(textView, new AccessibilityDelegateCompat()
    {
        @Override
        public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event)
        {
            super.onPopulateAccessibilityEvent(host, event);
            event.getText().add(host.getContentDescription());
        }
    });

但这会导致“话语提示”宣布“还剩2天9小时,还剩2d 9h”,这也是不正确的。

3 个答案:

答案 0 :(得分:1)

据我所知,contentDescription仅适用于必须进行文字描述的视图。例如,ImageView可能有一个contentDescription,可访问性对讲功能可以通过TextView知道该视图元素在被触摸时的内容。

我引用this link

  

内容描述属性将文本描述链接到   控件,ImageView或其他没有对象的可聚焦对象   文字内容。

因此,对讲功能应仅对ImageView中所写的文本进行发声。

在您的情况下,您可以考虑采用解决方法。获取一个contentDescription并将其设置为ImageViewTextView的大小应与TextView相同,并应放在ImageView上。因此,单击contentDescription时,您可以听到程序中指定的所需ImageViewinvisible可以具有透明背景,也可以放在 def get_window(row, df): return (1 + df).rolling(window=int(row['labels_y'])).apply(np.prod, raw=True).loc[row.name]-1 result = df1.apply(get_window, axis=1, df=df1) 中。希望有帮助!

答案 1 :(得分:0)

设置contentDescription后,textView的文本可能会以其他方法/在其他位置更新。 您是否安装了最新版本的“话语提示”? 同样,您将必须在设置此文本的任何地方设置contentdescription。 如果需要更多帮助,请告诉我。 如果您愿意,我也会帮助您编写代码 是的,无论内容如何,​​内容描述都可以应用于任何视图。因此请不要使用图像视图。

答案 2 :(得分:0)

对我唯一有用的是AccessibilityDelegate(科特琳):

val accessibilityDelegate: View.AccessibilityDelegate =
            object : View.AccessibilityDelegate() {
                override fun onInitializeAccessibilityNodeInfo(v: View?, info: AccessibilityNodeInfo) {
                    super.onInitializeAccessibilityNodeInfo(v, info)
                    info.text = "Custom Text"
                }
            }
myView.accessibilityDelegate = accessibilityDelegate