Android 实现多行文本跑马灯效果

Android TextView 实现跑马灯的效果很简单,只要加三个属性就可以了。

  • android:ellipsize="marquee"
  • android:focusable="true"
  • android:focusableInTouchMode="true"

上面的代码简单实用,但仅限于当前页面只有一个跑马灯的TextView 的实现。如果页面有两个或者是更多的跑马灯效果的时候,下面的就不会在动了。

找了一下原因,是因为要实现跑马灯的效果,TextView 必须要得到焦点。当一个页面有许多跑马灯的时候,默认的第一个TextView已经把焦点占据了。

因此别的跑马灯也就无法获取焦点了。

要想一个页面上同时实现多个跑马灯效果怎么办呢?其实也很简单。

  1. 写一个类继承TextView
  2. 重写里面的isFocused ()方法(直接返回true)
  3. 调用自己写的TextView控件

我们把所以的TextView创建时都强制获取焦点。

这里只粘贴一下,自定义的类和调用的代码(调用的时候从包名开始引用),其余的地方都是一样的。

<com.example.demo.MyTextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textSize="20sp"
android:textColor="#0ff0f0"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:text="你是什么1???你是什么2???你是什么3???你是什么4???你是什么5???" /> <com.example.demo.MyTextView
android:id="@+id/textView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textSize="20sp"
android:textColor="#000fff"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:text="我是跑马灯1。。。我是跑马灯2。。。我是跑马灯3。。。我是跑马灯4。。。我是跑马灯5。。。" />
 package com.example.demo;

 import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewDebug.ExportedProperty;
import android.widget.TextView; public class MyTextView extends TextView { public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
} public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
} public MyTextView(Context context) {
super(context);
// TODO Auto-generated constructor stub
} @Override
@ExportedProperty(category = "focus")
public boolean isFocused() {
// TODO Auto-generated method stub
return true;
}
}
上一篇:广告 竞价排名 import Levenshtein as Le seqratio_res = Le.seqratio(chk_name_lsit, cmp_)


下一篇:Session丢失,都是CDN惹的祸