其实实现跑马灯效果很方便的只需要TextView的几个属性即可
<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是一个自定义View
这边有五个属性都是在TextView长度占满时省略号的显示位置, end:在最后面显示 start 最前面 none 不显示 middle 中间 marquee 就是我们的跑马灯效果了
marqueeRepeatLimit = "marquee_forver" 跑马灯效果无限循环
singleLine 限制只允许单行显示
scrollHorizontally = "true" 水平滑动
还有要设置起获得焦点 focused
我们想要实现这个效果必须得重写TextView,因为我们得让TextView 实现一直获得焦点.
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 复写这个方法即可
注意想要滚动你的文字宽度必须大于Android:layout_width 你设置的控件宽度