美文网首页自定义控件Android开发Android开发
Android菜鸟起飞|自定义TextView实现跑马灯效果(滚

Android菜鸟起飞|自定义TextView实现跑马灯效果(滚

作者: 小胖0_0 | 来源:发表于2016-08-02 23:00 被阅读2303次

    单行TextView实现跑马灯效果的简单方法

    代码如下:

    <TextView
        android:layout_weight="wrap_content"
        android:layout_height="warp_content"
        android:singleLine="true"    //限制TextView单行显示,避免换行
        android:ellipsize="marquee"    //以横向滚动方式显示(需要获取当前焦点)
        android:focusable="true"    //获取焦点
        android:focusableInTouchMode="ture"    //触屏模式下可获得焦点
        android:text="某个超过单行显示限制的String值" />
    

    但是这样的方法只能实现单行的跑马灯TextView,多行TextView不能同时滚动显示。


    实现多个TextView跑马灯效果的方法

    1. 自定义一个TextView类,继承系统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);
        }
    

    2. 重载TextView类中的 "isFocused()" 方法,并返回ture。

    代码如下:

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

    3. 将XML文件中默认的TextView控件换成自定义的TextView,方法是:包名+类名

    代码如下:

    <com.example.asimov.marqueetextview.MyTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:ellipsize="marquee"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:text="@string/text" />
    

    这样,以自定义TextView添加的TextView都能实现滚动显示。

    相关文章

      网友评论

      本文标题:Android菜鸟起飞|自定义TextView实现跑马灯效果(滚

      本文链接:https://www.haomeiwen.com/subject/klkqsttx.html