この記事は Androidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Java での開発経験、XML構文規則、Android のアプリ開発経験がある方を対象としています。
Android のアプリ開発でお役にたててれば、嬉しいです。
(これから Android のアプリ開発や Java での開発を始めたい方への案内は、記事の最後で紹介します)
ポイント
Andoridアプリの開発で、使用頻度がもっとも高い、UIコンポーネントの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をオーバーライドします。
setSingleLineにTrueをセットして、setEllipsizeでMARQUEEを指定します。
そして、TextViewに文字列をセットしたあとに、setSelectedにTrueをセットして、TextViewを選択状態にします。
参考:エンティティクラス(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を習得するのに最適です。まずは無料オンライン相談から♪
参考になったら、💛をポッチとしてね♪
コメント欄