Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีใช้ข้อความวิ่ง (Marquee) ใน TextView บน Android

ภาพรวม

ตัวอย่างนี้สาธิตวิธีการทำให้ข้อความใน TextView วิ่งได้ (Marquee effect) เมื่อข้อความยาวกว่าพื้นที่แสดงผล

ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่

สร้างโปรเจกต์ Android ใหม่ใน Android Studio

ขั้นตอนที่ 2: จัดทำ 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:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/textMarquee"
        android:padding="4dp"
        android:textSize="24sp"
        android:textStyle="bold|italic"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"/>
</RelativeLayout>

แอตทริบิวต์สำคัญสำหรับ Marquee

แอตทริบิวต์ค่าหน้าที่
android:singleLinetrueบังคับให้ข้อความอยู่บรรทัดเดียว
android:ellipsizemarqueeเปิดใช้งาน marquee effect
android:marqueeRepeatLimitmarquee_foreverทำให้วิ่งวนลูปตลอดไป
android:scrollHorizontallytrueอนุญาตให้เลื่อนแนวนอน
android:focusabletrueต้องสามารถโฟกัสได้ (บางกรณี)

ขั้นตอนที่ 3: เขียนโค้ด MainActivity.java

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    TextView textMarquee;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textMarquee = findViewById(R.id.textMarquee);
        textMarquee.setText("Be the change that you wish to see in the world, Be yourself; everyone else is already taken.");
        textMarquee.setSelected(true); // สำคัญ! ต้องตั้งค่านี้
    }
}

จุดสำคัญ: setSelected(true)

TextView ต้องได้รับการเลือก (selected) ก่อน Marquee จะทำงาน การเรียก setSelected(true) ใน onCreate() เป็นวิธีง่ายที่สุด

การทดสอบ

รันแอป ข้อความยาวจะวิ่งซ้าย-ขวาอัตโนมัติและวนลูปตลอดไป