Android開発でのTextViewの1行表示の実装方法について

TextViewでの1行表示の制御

iOSではUILabelに相当するであるAndroidのTextViewの行表示なのですが、 今日おどろきましたので共有することにします。 前提はAPI通信でTextに表示する文字列を取得後にUIKitにsetTextさせてLabelやらTextViewやらに 文字を表示させる状況です。 固定文字列だったらこんな制御の話になるはずがありませんからね!

iOSでのUILabelについて

デフォルトだとUILabelは2行以上になるけど、UILabelの高さが1行分しか表示できないサイズであれば、 文字列として表示されるのは「1行」で文字切れ部分は「xxxx...」と省略されます。

AndroidでのTextViewについて

デフォルトだと2行以上の文字数であれば、TextViewの表示のされ方は 文字列として表示されるのは「1行」で文字切れ部分は「xxxx」と表示されていたのである。

そこでディくれクターからiOSの仕様に合わせてくれとのことだったので プログラムで「...」を表示させるのが今回の議題であった。

実装方法について

<TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:singleLine="true"
        android:textColor="@drawable/RED" />

という風に android:singleLinetrueに設定して、 eandroid:ellipsizeendと設定すれば「xxxx...」を実現できた。

ellipsizeのオプションについて

ellipsizeのオプションについては下記の表の通りの制御となります。

Value TextViewのデフォルト値 動作
none 何もしない
start ...xxxx
middle xxx...xxx
end xxxxxx...

スマホアプリの開発現場だとだいたいの仕様はiOSに合わせるかAndroidに合わせるかなので、 両OSでどのように挙動が変わるのかを事前に知っておくとスマートな実装が実現できますよね。

そういう意味も込めて、今AndroidSDKやUIについて勉強しています。

まあ、でもそろそろKotlinも触って行きたいな。