AndroidでTextViewのマーキースクロール方向を逆にする方法を解説
はじめに
この記事では、AndroidアプリでTextViewのマーキー(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:layoutDirection = "rtl" android:textDirection = "rtl" android:fadingEdge = "horizontal" android:marqueeRepeatLimit = "marquee_forever" android:scrollHorizontally = "true" android:textColor = "#ff4500" android:text = "كيفية عكس اتجاه سرادق.....كيفية عكس اتجاه سرادق......." android:layout_height = "wrap_content" android:singleLine = "true" /> </RelativeLayout>
ポイントとなる属性の解説
上記のコードでは、TextViewに対して以下の重要な属性を設定しています。
android:ellipsize = "marquee" android:layoutDirection = "rtl" android:textDirection = "rtl" android:fadingEdge = "horizontal" android:marqueeRepeatLimit = "marquee_forever" android:scrollHorizontally = "true" android:singleLine = "true"
- ellipsize="marquee":テキストが画面幅を超えた場合に、マーキーとしてスクロール表示します。
- layoutDirection / textDirection="rtl":レイアウトとテキストの方向を「右から左(Right To Left)」に設定することで、通常とは逆の左から右へのスクロールを実現する鍵となります。
- marqueeRepeatLimit="marquee_forever":マーキーを無限に繰り返し再生します。
- singleLine="true":テキストを1行に制限し、マーキー効果を有効にします。
サンプルのテキストにはアラビア語を使用しています。これはRTL(右から左)方向の言語であり、スクロール方向の反転が視覚的に確認しやすいためです。
手順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);
}
}重要なポイント:setSelected(true)
ここで最も重要なのは txt.setSelected(true) の呼び出しです。TextViewはデフォルトで「選択されていない」状態のため、このコードがないとマーキーは動作しません。必ずコード側で選択状態を有効にしてください。
※なお、android.support.v7.app.AppCompatActivity(サポートライブラリ)は現在非推奨となっています。新しいプロジェクトでは、androidx.appcompat.app.AppCompatActivityを使用するようにインポート文を読み替えてください。動作自体は同じです。
アプリの実行
それでは、アプリを実行してみましょう。実機のAndroidスマートフォンをパソコンに接続していることを確認してください。Android Studioからプロジェクト内のいずれかのアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。実行先のデバイスとして自分のモバイル端末を選択すると、端末に結果が表示されます。

実行結果
上記の実行結果のように、TextViewのテキストが左から右へスクロールアニメーションで流れることが確認できます。これは、layoutDirectionとtextDirectionをrtlに設定した効果によるものです。
まとめ
TextViewのマーキー方向を反転させるには、XMLレイアウトでellipsize="marquee"やlayoutDirection="rtl"などの属性を適切に設定し、Javaコード側でsetSelected(true)を呼び出すことがポイントです。ニュースティッカーや電光掲示板風のUIなど、さまざまな場面で応用できるテクニックなので、ぜひ試してみてください。
-
Androidで現在実行中のアプリケーションをプログラムから取得する方法
この記事では、Androidアプリから現在実行中のアプリケーションをプログラムで取得する方法を、実際のコード例とともに段階的に解説します。ActivityManagerクラスのgetRunningTasks()メソッドを利用することで、端末上で動作しているタスク(アプリ)の情報を取得できます。全体の流れ実装は以下の4ステップで行います。Android Studioで新規プロジェクトを作成するレイアウトファイル(activity_main.xml)を編集するMainActivityにタスク情報を取得するコードを記述するAndroidManifest.xmlを確認・設定するステップ1:新規プロジェ
-
Windows 10でスクロール方向を反転させる3つの方法
Windowsユーザーは大きく分けて2つのタイプに分けられます。標準のスクロール方向を使う人と、逆スクロールを好む人です。筆者は標準派ですが、「逆スクロールの方が自然」と感じる人も決して少なくありません。かつてはスクロール方向の反転はスイッチ一つで簡単に切り替えられました。しかしMicrosoftは最新のWindows 10アップデートで仕様を変更し、デバイス > マウスとタッチパッドから「スクロール方向を反転する」をワンクリックで切り替えることはできなくなりました。とはいえ、あきらめる必要はありません。多少手間はかかりますが、今でもスクロール方向を反転させる方法は存在します。調査の結果、最新