最初からのAndroid開発 View(画面部品) No.2 TextView

この記事は、最初からのAndroid開発という名前ですが、全くの初心者は対象としていません。Java言語を知っていて、Androidの入門書で簡単なアプリを作ったことがあるような人を対象としています。
この記事は、Androidの昔書いた記事のまとめの焼き直しです。

記事共通の話は次のページにまとめています。合わせてご確認ください。

最初からのAndroid開発 共通の話
最初からのAndroid開発まとめこの記事は、最初からのAndroid開発という名前ですが、全くの初心者は対象としていません。Java言語を知っていて、Androidの入門書で簡単なアプリを作ったことがあるような人を対象としています。この記

この記事の完全なソースコードは次のリポジトリのView02にあります。

webarata3/begin_Android
最初からのAndroid開発. Contribute to webarata3/begin_Android development by creating an account on GitHub.

TextView

今回のプログラム

MainActivity.java

package com.example.view02;

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:autoLink="all"
        android:text="autoLink http://example.com test@example.com" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:text="maxLines=1 長い長いテキストあいうえおかきくけこさしすせそたちつてとなにぬねの" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:lineSpacingExtra="10dp"
        android:text="lineSpacingExtra=10dp 長い長いテキストあいうえおかきくけこさしすせそたちつてとなにぬねの" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:lineSpacingMultiplier="1.5"
        android:text="lineSpacingMultiplier=1.5 長い長いテキストあいうえおかきくけこさしすせそたちつてとなにぬねの" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="start"
        android:singleLine="true"
        android:text="ellipsize=start 長い長いテキストあいうえおかきくけこさしすせそたちつてとなにぬねの" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="ellipsize=end 長い長いテキストあいうえおかきくけこさしすせそたちつてとなにぬねの" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="middle"
        android:singleLine="true"
        android:text="ellipsize=middle 長い長いテキストあいうえおかきくけこさしすせそたちつてとなにぬねの" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="textIsSelectable=true 選択可能なテキスト"
        android:textIsSelectable="true" />

</LinearLayout>

実行結果

実行結果は次のようになります。

リンクをクリックできるようにする

android:autoLink属性を設定することで、テキストに含まれるURLのような文字をクリックして適切なアプリが起動できるようになります。android:autoLinkには次の値を指定できます。

種類 名前
none 何もしない。デフォルト。
web URLを自動でリンクにする。
email eメールを自動でリンクにする。
phone 電話番号を自動でリンクにする
map 住所を自動でリンクにする。
all すべてのパターンをリンクにする。

これらは、「|」を使用して複数同時に指定できます。

android:autoLinkは最初の例では次のようにしています。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:autoLink="all"
    android:text="autoLink http://example.com test@example.com" />

改行しない

maxLines属性を使うと、例えば長いテキストを折り返さずに1行で表示させたりすることができます。

android:autoLinkは最初の例では次のようにしています。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:text="maxLines=1 長い長いテキストあいうえおかきくけこさしすせそたちつてとなにぬねの" />

行間を開ける

行間を開けるには、andoid:lineSpacingExtraもしくは、android:lineSpacingMultiplier属性を使います。

andoid:lineSpacingExtraは、開ける行間のサイズを指定します。android:lineSpacingMultiplierは、行間の割合を指定します。

行間の設定は最初の例では次のようにしています。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:lineSpacingExtra="10dp"
    android:text="lineSpacingExtra=10dp 長い長いテキストあいうえおかきくけこさしすせそたちつてとなにぬねの" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:lineSpacingMultiplier="1.5"
    android:text="lineSpacingMultiplier=1.5 長い長いテキストあいうえおかきくけこさしすせそたちつてとなにぬねの" />

長すぎるテキストの省略表示

android:ellipsize属性を使うと、テキストが領域内に収まらないときの省略方法を指定できます。android:ellipsizeの属性値としては次のものが指定できます。

種類 説明
none 何もしない。デフォルト動作。
start 先頭に省略記号を挿入。
middle 中間に省略記号を挿入。
end 最後に省略記号を挿入。
marguee 文字のスクロール(確認できなかった)。

android:ellipsizeは最初の例では次のようにしています。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="start"
    android:singleLine="true"
    android:text="ellipsize=start 長い長いテキストあいうえおかきくけこさしすせそたちつてとなにぬねの" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="end"
    android:singleLine="true"
    android:text="ellipsize=end 長い長いテキストあいうえおかきくけこさしすせそたちつてとなにぬねの" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="middle"
    android:singleLine="true"
    android:text="ellipsize=middle 長い長いテキストあいうえおかきくけこさしすせそたちつてとなにぬねの" />

テキストを選択可能にする

TextViewに表示している文字は選択できません。それを選択できるようにするには、android:textIsSelectable属性をtrueにする必要があります。

android:textIsSelectableは最初の例では次のようにしています。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="textIsSelectable=true 選択可能なテキスト"
    android:textIsSelectable="true" />

コメント