Android系统中TextView实现滚动效果

1.android:ellipsize属性:

android:ellipsize="start"              省略号在开头 
android:ellipsize="middle"           省略号在中间 
android:ellipsize="end"                省略号在结尾 
android:ellipsize="marquee"        跑马灯显示


实现滚动效果条件:

1、android:ellipsize=”marquee”
2、TextView必须单行显示,即内容必须超出TextView大小
3、TextView要获得焦点才能滚动
 
实现代码:

xml:

android:singleLine="true" //单行显示,singleLine="true"已经过时了,这种:maxLines="1"
android:ellipsize="marquee" //跑马灯显示
android:marqueeRepeatLimit="marquee_forever"//永久滚动
android:focusable="true" //控件是否能够获取焦点
android:focusableInTouchMode="true" //是否在触摸模式下获得焦点

 上面只是单行滚动,所以需要让其他的控件也获得焦点,个人认为就是让其他的控件都感觉自己获得了焦点,所以都会滚动~但是必须重写isFocuse()方法。

所以就需要自定义一个TextView,继承TextView,并且重写isFocuse()方法,让它永远返回true

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);
    }

    @Override
    public boolean isFocused() {
        return true;
    }
}

 

 接下来布局文件中使用自定义的TextView就好。包名.自定义TextView

<com.xxx.xxx.xxx.MyTextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:singleLine="true"                                                        //singleLine="true"已经过时了,这种:maxLines="1"
  android:ellipsize="marquee"
  android:marqueeRepeatLimit="marquee_forever"
  android:focusable="true"
  android:focusableInTouchMode="true" />



你可能感兴趣的:(Android,自学Android总结)