1. 程式人生 > >Android TextView 實現跑馬燈效果

Android TextView 實現跑馬燈效果

自定義一個TextView控制元件

public class MarqueeTextView extends AppCompatTextView {

    public MarqueeTextView(Context context) {
        super(context);
    }

    public MarqueeTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MarqueeTextView(Context context,
AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean isFocused() { return true; // 關鍵之處 } }

xml檔案設定四個關鍵屬性

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
<com.example.MarqueeTextView android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:
text
="我是長文字,我是長文字,我是長文字,我是長文字。" android:textSize="20sp" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true"/>
<com.example.MarqueeTextView android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是長文字,我是長文字,我是長文字,我是長文字。" android:textSize="20sp" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true"/> </LinearLayout>

注意

如果只在xml檔案中設定了singleLine、ellipsize、focusable、focusableInTouchMode,只有一個控制元件時可以實現跑馬燈效果,當我們的佈局比較複雜涉及多個文字控制元件時,跑馬燈效果就會出現問題,只有一個控制元件能正顯示,其他控制元件無法正常顯示。