2017-05-17 13 views
1

foo bar 04:58を含むTextViewを使用している場合、TalkBackはfoo bar 4 hours 58 minutesと表示されます。foo bar 4 minutes 58 secondsである必要があります。一方、foo bar 04:24:05はうまく動作します:foo bar 4 hours 24 minutes 5 seconds。私のロケールは、フランス語です。TalkBackで時刻が間違っています

私は、このためにunelegant修正考える:

  • mm minutes ss seconds

によって各mm:ssを交換し00:mm:ss

  • によって各mm:ssを交換してこれに対するより良い解決策はありますか?

  • 答えて

    3

    これは、コンテンツの説明でテキストを上書きすることをお勧めします。あなたはそれを広げなければなりません。

    それでは、あなたが代替テキストとしてテキストビューの

    textView.setText("2:45") 
    
    textView.setContentDescription("2 minutes 45 seconds") 
    

    コンテンツ記述は行動のTextViewを持っているし、代わりに読み出されるとしましょう。これは実際に他のアクセシビリティ問題を引き起こします。オーバーライド... UGHとしてコンテンツ記述を使用する代わりに、テキストとコンテンツ記述の両方を読み出すATを想像してみてください。しかし、TalkBackが圧倒的な市場シェアを誇る現在のAndroidアクセシビリティエコシステムでは、このソリューションは完全に邪悪なものではありません。理想的には、テキスト読み上げエンジンは愚かではないでしょう。しかし、TTSエンジンは愚かなので、読み上げが妥当であるためには、TalkBackが見ているテキストを変更する必要があります。

    また、TalkBackのユーザーは、必要に応じて文字でテキストを検索できるため、奇妙なTTS自動フォーマットを理解することができます。また、この代わりに見えるように、あなたのビューを変更しようとすることができます:

    textView.setText("2m 45s"); 
    

    は、私の記憶が正しければ、もののTTSエンジンはこれを「2メートル40ファイブ」を拡大していきます...素晴らしいです。

    編集:このコード行はあなたの他の問題に役立つと思います。

    timeString.replaceAll("([0-9]{1,2}):([0-9]{1,2})", "$1 minutes $2 seconds"); 
    
    +1

    これは本当にスマートです!できるだけ早くこれを試してみます。そして、私は '2m'が' 2m'であることを確認することができます... – natinusala

    +0

    しかし、ダイナミックにロードされたテキストビューではうまくいきません:私のアプリケーションに '14:24'を与えるHTTPリクエストがあり、テキスト、コンテンツの説明を入力できません – natinusala

    +0

    テキストビューはテキストビューです。動的に読み込まれるかどうか。ここに別の質問があるように聞こえますが、このソリューションについては、特定のビューがロードされる方法に固有のものはありません。 – ChrisCM