1. 用TextView的ellipsize属性实现
在TextView中实现我们的走马灯效果,需要两个属性 android:singleLine=”true”,以及 android:ellipsize=”marquee”
另外实现跑马灯还需要TextView控件获得当前的焦点。
设置 android:focusable和 android:focusableInTouchMode两个属性为true。布局文件设置如下:
<TextView
android:layout_width="100dip"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="走马灯效果的演示"
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
/>
这种方法的缺点是一旦TextView失去焦点(比如点击其他控件),跑马灯效果就会停止。而且无法同时显示多个TextView跑马灯。
2. 重写TextView的isFocused方法获取焦点
针对上一个方案中TextView失焦时跑马灯失效的问题,可以重写TextView类的isFocused方法来使控件获得焦点。方法原型:
public boolean isFocused ()
方法描述:Returns true if this view has focus
实现自己的TextView,然后重写isFocused方法强制其返回true,可在失焦的情况下保持跑马灯效果。