Kensuke Kousaka's Blog

Notes for Developing Software, Service.

Android 8.0.0で、不正な位置でテキストが折り返される

こちらのチケットで報告されているように、Android Oreo 8.0.0のTextViewにはテキスト折り返しのバグが存在する。

文節の長い文章をTextViewを表示させた場合、TextViewを画面幅一杯に広げている場合でも以下のように8.0.0のみ右端に大きな余白が空いてしまう場合がある。

f:id:k3n:20181206155954p:plain
7.0

f:id:k3n:20181206160027p:plain
8.0.0

f:id:k3n:20181206160042p:plain
8.1.0

テキスト折り返しのルールは、Android 6.0で追加されたbreakStrategyプロパティによって制御できる。このルールは以下の三種類あり、デフォルトでは最も手厚いBREAK_STRATEGY_HIGH_QUALITYが利用される。

このうちデフォルトで用いられているBREAK_STRATEGY_HIGH_QUALITYによるテキスト折り返しについて8.0.0のみ実装にバグがあるようで、8.1.0ではこの点が修正されている。

8.0.0で発生するこのバグを迂回するためには、BREAK_STRATEGY_SIMPLEを明示的に指定する。

f:id:k3n:20181206160146p:plain
8.0.0 HIGH_QUALITY

f:id:k3n:20181206160220p:plain
8.0.0 SIMPLE

f:id:k3n:20181206160237p:plain
8.1.0 HIGH_QUALITY