Android 小樣之TextView橫向滾動(跑馬燈效果)
阿新 • • 發佈:2019-01-01
偶爾做app的時候由於文字過多,但是又不想換行顯示,影響整體佈局效果,可以使用文字橫向滾動效果。
使用繼承Android原生TextView控制元件實現
- 設定xml檔案TextView屬性
<com.textview.MarqueeTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:singleLine="true"
android:marqueeRepeatLimit="marquee_forever"
android:layout_margin="14dip"
android:textSize="18sp"
android:text="@string/address"/>
要點:
1.設定文字長度長於可顯示範圍:android:singleLine="true"
2.設定跑馬燈顯示樣式:android:ellipsize="marquee"
3.設定迴圈次數為無限次:android:marqueeRepeatLimit
4.TextView只有在獲取焦點後才會滾動顯示隱藏文字,因此要重寫TextView類的isFocused方法,使其預設始終返回true。
2. 重寫TextView
跑馬燈效果需要TextVIew獲得當前的焦點(focus)。然而對於TextView這個控制元件來說,他的預設的Clickable,LongClickable,Focusable,FocusableInTouchMode這四個屬性的值都是false。因此要重寫TextView類的isFocused方法,使其預設始終返回true。
package com.textview;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
public class MarqueeTextView extends TextView{
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;
}
}