AndroidのTextViewには、表示する文字の長さが一定値を超えた際に、末尾を省略して表示する方法があります。
文字列全体を表示する必要がない場合などに使用すると便利です。
そこで、今回はTextViewで文字列の末尾を省略して表示する方法についてご紹介しますね。
TextViewで末尾を省略表示する方法
TextViewの横幅よりも長い文字列が入力されていた場合を想定します。
<TextView android:id="@+id/tView" android:layout_width="50dp" android:layout_height="wrap_content" android:text="Hello World!!"/>
この場合は、以下のように2行になって表示されてしまいます。
これでは、せっかくのレイアウトも崩れてしまいますよね。
文字列の末尾を省略したい場合には、以下のようにすればOKです。
<TextView android:id="@+id/tView" android:layout_width="50dp" android:layout_height="wrap_content" android:text="Hello World!!" android:maxLines="1" android:ellipsize="end"/>
maxLines =”1″とすることで、文字列が1行で表示されるようになります。
このとき、1行に収まらなかった部分は非表示になってしまうのですが、ellipsize=”end”と追加で設定することで、画像のように文末が省略表示されるのです。
elipsizeは文字列の省略設定になります。
ここで”end”とすることで、文末を省略して表示しなさい、という意味になるのです。
TextViewで文頭を省略したい場合
コードは以下となります。
<TextView android:id="@+id/tView" android:layout_width="50dp" android:layout_height="wrap_content" android:text="Hello World!!" android:singleLine="true" android:ellipsize="start"/>
singleLine=”true”とellipsize=”start”を追加しました。
これは、文字列が枠に収まりきらない場合は文頭を省略して表示しなさい、という意味になります。
ただ、singleLineはAPIレベル3で非推奨になっていますので、積極的におすすめはできない感じです。
その点に注意しつつ、表示を確認してみましょう。
確かに文頭が省略されていますね。
ellipsizeのその他の設定
需要があるのかはわかりませんが、文字列の中間のところを省略して表示することにもできますよ。
その場合は、「android:ellipsize=”middle”」となります。
表示は以下です。
この他にも、実はもう2種類あります。
1つは「android:ellipsize=”none”」という、文字列を見切れたまま表示するものです。
最後の1つは、HTMLのmarquee属性と同じ動きをする「android:ellipsize=”marquee”」というものです。
HTMLのmarquee属性については、こちらのリファレンスが詳しいです。
この辺りは、あまり使用しているところを見ない気がします。
どのように使うのか、センスが試されそうですね・・。
elipsizeの詳しい説明については、公式ドキュメントをご確認ください。
終わりに
今回はTextViewで文字列の末尾を省略して表示する方法についてご紹介しました。
文字列の一部を省略することで、TextView全体のレイアウトを維持したまま表示できるので、結構使いどころは多いと思います。
今回はここまでです。それでは。