Android
 Computer >> コンピューター >  >> プログラミング >> Android

Androidでマーキー(流れる)テキストを実装する方法【初心者向け解説】

Androidアプリ開発では、ニュースティッカーやお知らせ表示などでよく使われる「マーキー(Marquee)」と呼ばれる、横方向にスクロールする流れるテキストを実装したい場面があります。この記事では、TextViewのプロパティを設定するだけで簡単にマーキーテキストを実現する方法を、ステップごとにわかりやすく解説します。

実装手順

ステップ1:新しいプロジェクトを作成する

まず、Android Studioを起動し、「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目(プロジェクト名、パッケージ名、保存先など)を入力してプロジェクトをセットアップしましょう。

ステップ2:レイアウトファイル(activity_main.xml)を編集する

次に、res/layout/activity_main.xmlに以下のコードを追加します。

<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout
   xmlns:android = "https://schemas.android.com/apk/res/android"
   xmlns:tools = "https://schemas.android.com/tools"
   android:layout_width = "match_parent"
   android:gravity = "center"
   android:layout_height = "match_parent">
   <TextView
      android:id = "@+id/text"
      android:textSize = "20dp"
      android:textAlignment = "center"
      android:layout_width = "match_parent"
      android:ellipsize = "marquee"
      android:fadingEdge = "horizontal"
      android:marqueeRepeatLimit = "marquee_forever"
      android:scrollHorizontally = "true"
      android:textColor = "#ff4500"
      android:text = "Simple application that shows how to use marquee, with a long text"
      android:layout_height = "wrap_content"
      android:singleLine = "true" />
</RelativeLayout>

このコードでは、TextViewに対してマーキー効果を実現するための重要なプロパティを設定しています。ポイントとなる属性は以下の5つです。

android:ellipsize = "marquee"
android:fadingEdge = "horizontal"
android:marqueeRepeatLimit = "marquee_forever"
android:scrollHorizontally = "true"
android:singleLine = "true"

各属性の役割は次のとおりです。

  • ellipsize="marquee":テキストが画面幅を超えた場合に、末尾を省略する代わりにマーキースクロールを有効にします。
  • fadingEdge="horizontal":左右の端でテキストがフェードしながら消える視覚効果を追加します。
  • marqueeRepeatLimit="marquee_forever":スクロールを無限に繰り返す設定です。数値を指定すれば繰り返し回数を制限することもできます。
  • scrollHorizontally="true":テキストを横方向にスクロール可能にします。
  • singleLine="true":テキストを1行に固定します。マーキーは単一行テキストでのみ動作するため、必須の設定です。

ステップ3:MainActivity.javaにコードを追加する

続いて、src/MainActivity.javaに以下のコードを記述します。

package com.example.andy.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      TextView txt = findViewById(R.id.text);
      txt.setSelected(true);
   }
}

ここで最も重要なのは txt.setSelected(true); の1行です。マーキースクロールはTextViewにフォーカスが当たっている(選択されている)状態でのみ動作するため、この呼び出しを忘れるとテキストが流れません。XML側だけで完結させたい場合は、レイアウトファイルのTextViewに android:selected="true" を追加する方法もあります。

アプリを実行して確認する

それではアプリを実際に実行してみましょう。AndroidスマートフォンをPCに接続している状態で、Android Studioから任意のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。接続した実機を選択して起動すると、デバイス上に以下のような画面が表示されます。

Androidでマーキー(流れる)テキストを実装する方法【初心者向け解説】

実行結果を見ると、テキストが右から左へ向かって滑らかにスクロールしていることが確認できます。これで、シンプルなマーキーテキストの実装は完了です。

まとめ

Androidでマーキーテキストを実装するポイントは、次の2点に集約されます。

  • レイアウトXMLで ellipsize="marquee"singleLine="true" などの属性を設定する
  • コード側で setSelected(true) を呼び出してTextViewを選択状態にする

ニュース速報や告知バナーなど、情報を動的に見せたいUIにぜひ活用してみてください。なお、singleLine は非推奨属性となっているため、新しいプロジェクトでは maxLines="1" と組み合わせて使うことも検討するとよいでしょう。

  1. Androidスピナーに初期デフォルトテキストを表示させる方法【コード例付き】

    このチュートリアルでは、Androidアプリでスピナー(Spinner)ウィジェットを使い、ユーザーが何も選択していない初期状態に「デフォルトテキスト」を表示させる方法を解説します。「リストから選択してください」のようなガイド文をスピナーの初期値として設定したいケースで役立つテクニックです。実装の全体像実装のポイントは、スピナーに渡すデータリストの先頭(インデックス0)にガイド用テキストを追加することです。さらに選択イベント処理の中で、この先頭項目が選択されたときには通常の選択処理を行わないように分岐させます。以下、ステップ順に見ていきましょう。ステップ1:新規プロジェクトの作成Android

  2. 【Android】TextViewでテキストを両端揃え(ジャスティファイ)表示する方法

    概要 本記事では、AndroidアプリのTextViewに表示するテキストを両端揃え(ジャスティファイ)にする方法を、サンプルコードとともにわかりやすく解説します。 TextViewで両端揃えを実現するには、android:justificationMode=inter_wordを指定するだけです。この機能はAndroid 8.0(APIレベル26)以降で有効になるため、それ以前のOSバージョンでは無視される点に注意してください。 手順1:新規プロジェクトを作成する まず、Android Studioを起動し、メニューから「File」⇒「New Project」を選択します。必要な項目をす