ภาพรวม
ตัวอย่างนี้สาธิตวิธีการทำให้ข้อความใน 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:singleLine | true | บังคับให้ข้อความอยู่บรรทัดเดียว |
| android:ellipsize | marquee | เปิดใช้งาน marquee effect |
| android:marqueeRepeatLimit | marquee_forever | ทำให้วิ่งวนลูปตลอดไป |
| android:scrollHorizontally | true | อนุญาตให้เลื่อนแนวนอน |
| android:focusable | true | ต้องสามารถโฟกัสได้ (บางกรณี) |
ขั้นตอนที่ 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() เป็นวิธีง่ายที่สุด
การทดสอบ
รันแอป ข้อความยาวจะวิ่งซ้าย-ขวาอัตโนมัติและวนลูปตลอดไป