Android

【Android】TextViewの文字の末尾を省略して表示する方法

android_dialog

AndroidのTextViewには、表示する文字の長さが一定値を超えた際に、末尾を省略して表示する方法があります。

文字列全体を表示する必要がない場合などに使用すると便利です。

そこで、今回はTextViewで文字列の末尾を省略して表示する方法についてご紹介しますね。

TextViewで末尾を省略表示する方法

TextViewの横幅よりも長い文字列が入力されていた場合を想定します。

        <TextView
            android:id="@+id/tView"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:text="Hello World!!"/>

この場合は、以下のように2行になって表示されてしまいます。

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全体のレイアウトを維持したまま表示できるので、結構使いどころは多いと思います。

今回はここまでです。それでは。