带有提示的编辑文本中的 Android 可访问性

Posted

技术标签:

【中文标题】带有提示的编辑文本中的 Android 可访问性【英文标题】:Android accessibility in edit text with hint 【发布时间】:2013-10-14 01:29:02 【问题描述】:

我在创建帐户时有用于输入名字的编辑文本,它的提示是“Jane”(作为名字)。我还想在这个编辑文本上有内容描述,以便访问说“名字”。 当我同时设置提示和内容描述时,弹出警告“不要同时设置 contentDescription 和提示:contentDescription 会屏蔽提示”,这很好,只是内容描述没有屏蔽提示。当我打开 TalkBack 时,它仍然会读取提示而不是内容描述。

谁能帮我解决这个问题。 谢谢。

【问题讨论】:

你可以找到答案here。 【参考方案1】:

据我了解,android:hint 是 TextViews(及其子类)中文本的占位符,只要它们不显示任何文本,而 android:contentDescription 是非文本内容的替代文本描述(图片...)。因此,我只会在 EditText 上设置提示。

【讨论】:

我刚刚意识到如果我选择输入类型 textPassword 它将读取内容描述而不是提示,但我不明白为什么这个属性会影响可访问性。显然我不能在所有编辑文本上使用这种输入类型 @Damir 虽然我没有意识到这一点,但它是有道理的。带有 inputType textPassword 的 EditText 或多或少是非文本内容,因此它需要一个 contentDescription。据我了解,只有在 TextView 中当前不存在文本内容的情况下,辅助软件才会读取提示,否则会读取文本。我猜没有无障碍软件会读取输入类型 textPaswort EditText 的文本,当已经输入了某些内容时,因此它不会读取提示,而是两种情况下的 contentDescription(输入或不输入文本)。 “据我了解,只有在 TextView 中当前不存在文本内容的情况下,辅助软件才会读取提示,否则会读取文本。” - 我也有同样的想法,但事实并非如此,即使我在 Eclipse 状态不同的警告时添加内容描述,也会读取提示。 "不要同时设置 contentDescription 和 hint:contentDescription 会屏蔽提示" @Damir 但被提示读取,当 TextView/EditText 上没有可用的 contenDescription 并且它不包含任何文本时? 抱歉,我的回复迟了,是的,当没有可用的 contetDescription 时会读取提示,但我希望读取 contentDescription(如果可用)而不是提示。【参考方案2】:

我遇到了同样的问题,并通过在启用无障碍服务时将提示设置为 null 来解决它。因为当它启用时,用户可能不需要提示。

private void setAccessibility()

   if (isExploreByTouchEnabled())
            
      firstName.setHint(null);
      firstName.setContentDescription("first name");
   


public boolean isExploreByTouchEnabled()

   AccessibilityManager am = (AccessibilityManager) getContext().getSystemService(ACCESSIBILITY_SERVICE);
   boolean isAccessibilityEnabled = am.isEnabled();
   boolean isExploreByTouchEnabled = am.isTouchExplorationEnabled();
   return isAccessibilityEnabled && isExploreByTouchEnabled;

【讨论】:

以上是关于带有提示的编辑文本中的 Android 可访问性的主要内容,如果未能解决你的问题,请参考以下文章

div 按钮可访问性可点击

带有提示和图像的 Android 可点击 TextView 以启动搜索对话框并显示所选结果

Phonegap 中的只读文本输入字段是可编辑的

带有可绘制资源中的形状的文本

Android 可访问性将对讲限制为仅读取可见文本

建议中文软键盘中的文本状态android触发编辑文本的文本更改事件