其實(shí)實(shí)現(xiàn)跑馬燈效果很方便的只需要TextView的幾個(gè)屬性即可
<com.view.MarqueeTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="消息"
android:gravity="center"
android:ellipsize="marquee"? //跑馬燈效果
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:scrollHorizontally="true"
android:id="@+id/text"
android:ellipsize="marquee"/>
注:本View是一個(gè)自定義View
這邊有五個(gè)屬性都是在TextView長(zhǎng)度占滿時(shí)省略號(hào)的顯示位置, ? end:在最后面顯示 ?start 最前面 none 不顯示 middle ?中間 ?marquee 就是我們的跑馬燈效果了
marqueeRepeatLimit = "marquee_forver" 跑馬燈效果無(wú)限循環(huán)
singleLine 限制只允許單行顯示
scrollHorizontally = "true" 水平滑動(dòng)
還有要設(shè)置起獲得焦點(diǎn) ?focused
我們想要實(shí)現(xiàn)這個(gè)效果必須得重寫TextView,因?yàn)槲覀兊米孴extView 實(shí)現(xiàn)一直獲得焦點(diǎn).
public classMarqueeTextViewextendsTextView{publicMarqueeTextView(Context context) {
super(context);
}
public MarqueeTextView(Context context,AttributeSet attrs) {
super(context,attrs);
}
public MarqueeTextView(Context context,AttributeSet attrs, intdefStyleAttr) {
super(context,attrs,defStyleAttr);
}
@Override
public booleanisFocused()?
{return true;}}
isFocused return true ?復(fù)寫這個(gè)方法即可
注意想要滾動(dòng)你的文字寬度必須大于Android:layout_width ?你設(shè)置的控件寬度