Android-TextView跑马灯效果

1.让很多文字一行显示,默认是false,设置为true;

android:singleLine="true"

2.对文字进行裁剪,默认是end裁剪;

android:ellipsize="end"

 3.设置文字裁剪为start,设置一行显示:

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="专一 只专注Android,持之以恒 每天坚持努力学习Android,全身心投入把Android学精,把学习Android演变成兴趣爱好"

        android:singleLine="true"
        android:ellipsize="start"
        />

4.如何让文字滚动起来,按理来说设置 ellipsize="marquee" 就可以滚动起来了,但是系统默认认为无法获取TextVIew焦点,所以还需要设置能得到焦点

android:singleLine="true"
android:ellipsize="marquee"
TextView tvText = findViewById(R.id.tv_text);
tvText.setSelected(true);

5.已经可以滚动起来了,由于系统内部是采用定时器去启动的,有可能会停止,为了解决不稳定性,还可以设置一个属性就稳定了 

android:marqueeRepeatLimit="marquee_forever"

另外一种方式告诉系统TextView是有焦点的:

<liudeli.ui.all.MyTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="专一 只专注Android,持之以恒 每天坚持努力学习Android,全身心投入把Android学精,把学习Android演变成兴趣爱好"

        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        />
public class MyTextView extends TextView {

    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    /**
     * 重新此方法,是为了告诉系统,TextView可以获取到焦点啦
     * @return
     */
    @Override
    public boolean isFocused() {
        return true;
    }
}

猜你喜欢

转载自www.cnblogs.com/android-deli/p/10080015.html