首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

Android TextView 實現跑馬燈橫向自動滾動完整教學

     編輯:C++ 入門

效果預覽

文字超寬時自動橫向滾動,循環播放:

靜態 滾動中

關鍵屬性組合

在 XML 佈局中為 `TextView` 設定以下屬性:

<TextView
    android:id="@+id/text1"
    android:layout_width="80dp"
    android:layout_height="40dp"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:scrollHorizontally="true"
    android:singleLine="true"
    android:textColor="#0551A5"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_centerInParent="true" />

屬性解析

屬性作用
ellipsize="marquee"啟用跑馬燈效果
marqueeRepeatLimit="marquee_forever"無限循環(也可填數字指定次數)
focusable="true"允許獲取焦點(滾動前提)
focusableInTouchMode="true"觸摸模式下也能獲取焦點
scrollHorizontally="true"允許水平滾動
singleLine="true"強制單行顯示(必要條件)

Java 代碼啟動

public class MyActivity extends Activity {
    private TextView text1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        text1 = (TextView) findViewById(R.id.text1);
        text1.setText("春光無限好,只是近黃昏………………");
    }
}

只要文字寬度超過 `layout_width`,且 View 獲得焦點,跑馬燈即自動啟動。

常見坑點

  • 若在 `ListView`/`RecyclerView` 項目中使用,需在項目 View 的 `onFocusChanged` 或 `setSelected(true)` 強制啟動。
  • 父佈局不可攔截焦點(如 `ListView` 預設 `focusable="true"` 會搶焦點)。
  • API 29+ 可改用 `setHorizontallyScrolling(true)` 程式化設定。

原始碼下載

(原文提供下載連結,此處略)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved