TextView文本文字的左右滚动效果(跑马灯)的两种方式:
一、在布局文件中设置相应的焦点
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:focusable="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:text="**********"/>
二、继承AppCompatTextView,继承控件的三个方法,重写isFocused()方法,然后在布局文件中引用自定义控件的完整路径名
public class MyTextView extends AppCompatTextView {
public HomeTextView(Context context) {
super(context);
}
public HomeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public HomeTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean isFocused() {
return true;
}
}
<com.demo.ui.MyTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:text="**********"/>
重点:必须使用
android
:singleLine=
"true"
不可以用 android :maxLines= "1" 或 android :lines= "1" 代替,
代替之后就不会有滚动效果了,虽然会报这个警告......:
android:singleLine
is deprecated: Use maxLines="1"
instead less... (Ctrl+F1)
Deprecated views, attributes and so on are deprecated because there is a better way to do something. Do it that new way. You've been warned.