Androidアプリ開発

TextViewの文字をスクロール表示する

この記事は約8分で読めます。
記事内に広告が含まれています。
スポンサーリンク

この記事は Androidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Java での開発経験、XML構文規則、Android のアプリ開発経験がある方を対象としています。
Android のアプリ開発でお役にたててれば、嬉しいです。
(これから Android のアプリ開発や Java での開発を始めたい方への案内は、
記事の最後で紹介します)

この記事のテーマ


TextViewの文字をスクロール表示させて、文字列全体を表示する

ポイント

Andoridアプリの開発で、使用頻度がもっとも高い、UIコンポーネントのTextView。
使用する上で、困りごとのひとつとして、文字列全体が入りきらないケースがあります。
今回は、文字列全体が入りきらないケースの対応として、文字列をスクロール表示させて、文字列全体を見せる、簡単で便利な実装方法について、紹介します。

TextView に文字が入りきらない場合、スクロール表示します

TextView

TextViewには、ellipsize属性を指定することで、指定した UI コンポーネントのサイズに文字列が入りきらない場合に、省略表示する機能があります。
ellipsize属性の指定は、レイアウト XML に記述するほか、Java からも記述できます。
省略表示の方法として、文字列の末尾(END)、中間(MIDDLE)、先頭(START)などが指定でき、そのひとつとして、省略表示ではなくスクロール表示する MARQUEEがあります。

参考:レイアウトXML(item_horizontal)

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <ImageView
                android:id="@+id/image"
                android:scaleType="centerCrop"
                android:layout_width="120dp"
                android:layout_height="120dp"
                android:src="@drawable/no_image"
                tools:ignore="ContentDescription" />
        <TextView
            android:id="@+id/name"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="12sp"/>
    </LinearLayout>
</LinearLayout>

MARQUEEを使用する場合で、スクロール表示する基準となるサイズ(layout_width)を指定することが重要です。

        :
        ArrayList<MusicItem> arrayList = new ArrayList<>();
      : 
        RecyclerView.Adapter adapter = new RecyclerView.Adapter(arrayList) {
            @Override
            public View getView(ViewGroup parent) {
                return LayoutInflater.from(parent.getContext()).inflate(R.layout.item_horizontal, parent,false);
            }
            @Override
            public void onBindView(View view, Object data, int position) {
         :
                TextView textView = view.findViewById(R.id.name);
                textView.setSingleLine(true);
                textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
                textView.setText(arrayList.get(position).title);
                textView.setSelected(true);
            }
        };
    :

RecyclerViewのアダプタで、onBindViewをオーバーライドします。
setSingleLineTrueをセットして、setEllipsizeMARQUEEを指定します。
そして、
TextViewに文字列をセットしたあとに、setSelectedTrueをセットして、TextViewを選択状態にします。

スクロール表示の切り替えは、setSelectedで行えます。

参考:エンティティクラス(MusicItem)

public class MusicItem {
    public String   title;      // タイトル
    public String   artist;     // アーティスト
    public long     duration;   // 再生時間
    public Uri      albumUri;   // アルバムUri
    public Uri      musicUri;   // 音楽ファイルUri
    public String   source;     // 音楽ファイル
    public MusicItem(String title, String artist, long duration, Uri albumUri, Uri musicUri, String source) {
        this.title    = title;
        this.artist   = artist;
        this.duration = duration;
        this.albumUri = albumUri;
        this.musicUri = musicUri;
        this.source   = source;
    }
}

今回は、ここまでです。

TextViewの文字をスクロール表示を実装しているAndroidアプリです。

誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にある
コメントか、
こちらから、お願いいたします♪

ポチッとして頂けると、
次のコンテンツを作成する励みになります♪

ブログランキング・にほんブログ村へ

これからAndroidのアプリ開発やJavaでの開発を始めたい方へ

初めての Android のアプリ開発では、アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、Java や C# などのオブジェクト指向言語が初めての方は、書籍などによる独学ではアプリ開発できるようになるには、かなりの時間がかかりますので、オンラインスクールでの習得をおススメします。

未経験者からシステムエンジニアを目指すのに最適です。まずは無料相談から♪

未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪

カリキュラムとサポートがしっかりしています。お得なキャンペーンとかいろいろやっています♪

ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適です。まずは無料オンライン相談から♪

参考になったら、💛をポッチとしてね♪

スポンサーリンク
msakiをフォローする
スポンサーリンク

コメント欄

タイトルとURLをコピーしました