Androidd Studio 之多行文字跑马灯特效


?效果展示图

?参考资料

  两种方法实现TextView跑马灯效果(字体横向滚动)

?出现的问题

  新建 Java 文件继承 TextView 时出现问题:

?解决方法

  不应该继承 $TextView$ 而应该继承 $AppCompatTextView$;

  此时,可能还会报错:

   不要慌,问题不大,在类里加入如下代码即可解决问题:

public MyTextView(Context context) {
    super(context);
}

?多行文字跑马灯

  • 新建一个java文件,并命名为 $MyTextView$,继承 $AppCompatTextView$,重写 $TextView$ 的三个方法
  • 在布局中把要使用跑马灯效果的 $Textview$ 换成 $MyTextView$ 即可

  MyTextView.java 代码:

public class MyTextView extends AppCompatTextView {


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

  activity.xml 中的 组件代码:

<com.example.table.MyTextView
    android:ellipsize="marquee"
    android:id="@+id/tv_1"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:marqueeRepeatLimit="marquee_forever"
    android:singleLine="true"
    android:text="我是多行文字跑马灯001"
    android:textColor="#F82414"
    android:textSize="50sp" />

<com.example.table.MyTextView
    android:ellipsize="marquee"
    android:id="@+id/tv_2"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:layout_width="wrap_content"
    android:marqueeRepeatLimit="marquee_forever"
    android:singleLine="true"
    android:text="我是多行文字跑马灯002"
    android:textColor="#0288D1"
    android:textSize="50sp" />