3

私のアプリケーションをアクセス可能にしていて、私の編集テキストに問題があります:TalkBackのTextViewエラーメッセージを自動的に読み取る方法は?

すべてのEditTextでは、ユーザーの入力はある時点で確認されています(たとえばボタンを押した後)。私はeditText.setError("message")を使用してエラーを表示します。問題は、TalkBackがオンの場合、自動的にフォーカスしてエラーを読み取らないことです。また、私はエラーのビューを取得することができないので、私はsendAccessibilityEvent経由でそれをフォーカスするようにTalkBackに依頼することはできません。

まだeditText.setError()を使用しているうちに、この問題を解決する方法に関するお考えをありがとうございます。

編集@Abhishek Vソリューションの1追加コード:

public class BaseEditText extends EditText { 

    ... 
    ... 

    @Override 
    public void setError(CharSequence error) { 
     super.setError(error); 
     announceForAccessibility(error); 
    } 
} 

答えて

5

明示的View

editText.setError("message") 
editText.announceForAccessibility("message"); 

が提供するannounceForAccessibility("mesage")機能によってエラーメッセージを読み出すことができます。この機能であったことに注意してくださいAPIレベル16に追加されました。

更新1:テキストは何度も何度も読んでエラーメッセージを防ぐためにEditTextに変更されたときnullにエラーメッセージを設定します。

+0

答えはありますが、それでも2つの問題があります。1.トークバックは、エラーメッセージに重点を置いていません(大したことではありません)。2.エラーを表示した後にeditTextをタイプすると、視覚エラーが既に消えた後、エラーメッセージが再び表示されます。どのようにそれらの問題に対処するための任意のアイデア? – Tako

+0

1)それを修正する方法がわからない2)announceForAccessibilityを正確に呼び出すときはいつですか?あなたはそのコードを投稿できますか? –

+0

私は、カスタムEditTextのsetErrorにannounceForAccessibility()を追加しました(質問への更新を参照)。 – Tako

関連する問題