Android TextView 實現跑馬燈效果
阿新 • • 發佈:2018-12-20
自定義一個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,只有一個控制元件時可以實現跑馬燈效果,當我們的佈局比較複雜涉及多個文字控制元件時,跑馬燈效果就會出現問題,只有一個控制元件能正顯示,其他控制元件無法正常顯示。