我使用Android.support提供的新TextInputLayout来执行浮动标签。但它会失败Espresso辅助功能检查,因为" View缺少屏幕阅读器所需的可说文本"。
查看它并找出当父进行addView()时TextInputLayout将使null提示无效。这基本上是它如何浮动标签(设置标签,使提示无效)。任何带有空提示的EditText都将无法通过辅助功能检查。
任何人都知道如何解决此问题?这真让我疯狂..
非常感谢!!!!
答案 0 :(得分:5)
一般来说,提示对于可访问性并不是很好。输入文本时它们会消失。尝试使用" LabelFor"代替。如果您不想要可见标签,可以将标签设置为不显示。
此应用程序将为您提供有关如何使文本框可访问的提示。
https://play.google.com/store/apps/details?id=com.dequesystems.accessibility101
答案 1 :(得分:4)
使TextInputLayout可访问的一个好方法是使用" LabelFor"正如ChrisCM所建议的那样,但您不必添加隐形标签视图来执行此操作:只需放置labelFor
或您的Textinputlayout
并将其指向您的{{1 }} 强>
示例强>:
EditText
通过这种方式,您可以获得完全相同的视觉行为并进行“#Espresso辅助功能检查”。和对讲高兴:)
(为了使TextInputLayout完全可访问,我还在TextInputLayout元素上添加了<android.support.design.widget.TextInputLayout
android:labelFor="@+id/username"
android:contentDescription="@string/username_hint"
android:accessibilityLiveRegion="polite">
<edittext
android:id="@+id/username"
android:hint="@string/username_hint"
…/>
</android.support.design.widget.TextInputLayout>
,以便在弹出错误时触发对讲)
非常感谢这篇帮助很多的帖子this blog post
答案 2 :(得分:1)
或者,如果这是误报,则您可以按照here
的说明忽略支票val validator: AccessibilityValidator = AccessibilityChecks.enable().apply {
setSuppressingResultMatcher(
allOf(
matchesCheckNames(`is`("TouchTargetSizeViewCheck")),
matchesViews(withId(R.id.my_overflow))
)
)}
当我们启用可访问性检查测试时,将调用以下规则:
答案 3 :(得分:0)
您可以使TextView具有
android:text="My Announcement For Edit Text"
android:labelFor="@id/my_edit_text".
Visibility = gone
和visibility = invisible
可以做到,因此不会宣布此标签。同样,如果将高度和宽度设置为0dp,则不会宣布。而是使用以下方法将视图限制为不在屏幕上:
app:layout_constraintEnd_toStartOf="parent"
因此您的文本视图将如下所示:
<TextView
android:id="@+id/edit_text_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:labelFor="@+id/my_edit_text"
android:text="Label For My Edit Text"
app:layout_constraintEnd_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>