简单的方法TextView
<TextView
android:singleLine="true"
android:ellipsize="marquee"
android:text="大王让我来巡山,寻了南山寻北山"
android:background="@color/colorAccent"
android:textSize="30sp"
android:textColor="#ffffff"
android:padding="10dp"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
关键的理解
android:singleLine="true" //设置文字只显示一行
android:ellipsize="marquee"// 设置无法显示的文字的显示方式为跑马灯
android:marqueeRepeatLimit="marquee_forever"//设置跑马灯的重复方式
android:text="大王让我来巡山,寻了南山寻北山"//注意文字一定要长,否则无效果
android:focusableInTouchMode="true" //通过触摸方式获取焦点
android:focusable="true"//获取焦点
复杂的走马灯的效果
继承TextView
public class MyTextView extends TextView {
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
//重写这个方法,强制返回true
@Override
public boolean isFocused() {
return true;
}
}
布局的xml
<com.bawie.MyTextView
android:singleLine="true"
android:ellipsize="marquee"
android:text="大王让我来巡山,寻了南山寻北山"
android:background="@color/colorAccent"
android:textSize="30sp"
android:textColor="#ffffff"
android:padding="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
核心代码
android:singleLine="true"
android:ellipsize="marquee"
android:text="大王让我来巡山,寻了南山寻北山"