はじめに
TextViewの自動サイズ調整、テキストが動的に変わる場合や少々長い文言を設定しなければならない場合などにおいて非常に便利ですよね。
ただし、この自動サイズ調整には設定を誤ると予期しない結果が生じる可能性がありますので、今回はその点を備忘録的にまとめておこうと思います。
自動サイズ調整の落とし穴
まず、TextViewを以下のように設定しているとします。
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoSizeTextType="uniform"
android:autoSizeMinTextSize="12sp"
android:autoSizeMaxTextSize="100sp"
android:autoSizeStepGranularity="2sp" />
一見すると特に問題ないように見えますが、この実装では自動サイズ調整が機能しない可能性があります。
特に動的にテキストが設定される場合において、以前設定したテキストのサイズから変わらないなどの不具合が生じます。
さて、上記実装の問題箇所ですが、layout_heightの設定がwrap_contentになっている点が問題箇所になります。
実は公式には自動サイズ調整においての注意点が以下のように記載されています。
注: XML ファイルで自動サイズ調整を設定した場合、TextView の layout_width 属性または layout_height 属性に値「wrap_content」を使用することはおすすめしません。そのようにすると、予期しない結果が生じる可能性があります。
まさに上記の通りで、予期しない結果というのは、動的にテキストを変えた場合にテキストサイズが変わらないことがあるよ、という事を指しています。
TextViewを使用していたら自動サイズ調整は比較的使用頻度の高い設定ですが、Viewのサイズを見誤ると不具合が生じる可能性がありますので注意したいところです。
ご説明は以上になります。
さいごに
Composeには現状自動サイズ調整機能はないので、今後に期待ですね。