Android 如何实现TextView的跑马灯效果,即轮播

来源:互联网 发布:python 自带shell 编辑:程序博客网 时间:2024/06/05 07:07

如果只有一个TextView,只要把textview的属性更改就好了


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

但是如果有几个甚至好多textview,那么后面的的就不能获取焦点,要实现,我们需定义一个类MarqueeText:注意要继承TextView类


import android.content.Context;import android.util.AttributeSet;import android.widget.TextView;/** * Created by 97617 on 2016/11/26. */public class MarqueeText extends TextView {    public MarqueeText(Context context) {        super(context);    }    @Override//实现了都获取焦点    public boolean isFocused() {        return true;    }    public MarqueeText(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    public MarqueeText(Context context, AttributeSet attrs) {        super(context, attrs);    }}
然后text使用聚焦Textview的时候,代码如下:


    <com.example.a97617.textdemo.MarqueeText        android:id="@+id/text1"        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/hello_world" />    <com.example.a97617.textdemo.MarqueeText        android:layout_below="@id/text1"        android:layout_marginTop="10dp"        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/hello_world" />



0 0
原创粉丝点击