文档章节

TextView实现跑马灯效果

GaoLeng
 GaoLeng
发布于 2016/03/03 17:11
字数 509
阅读 124
收藏 6
1、单个TextView实现跑马灯效果

        在这里我们只需设置xml文件就能实现效果。

 <club.zhanyan.yangjie.marqueetextviewdemo.MarqueeTextView
        android:id="@+id/textViewId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"     //设置文字超过控件宽度时的显示方式
        android:focusable="true"     //设置是否获取焦点
        android:focusableInTouchMode="true"   //设置是否在触摸模式下获得焦点
        android:marqueeRepeatLimit="marquee_forever"//设置滚动次数,marquee_forever为无限次
        android:singleLine="true"     //设置文本单行显示
        android:text="我是一个长的TextView,我是一个长的TextView,我是一个长的TextView。" />
2、多个TextView实现跑马灯效果

        如果设置多个TextView的跑马灯效果,就需要为多个TextView设置焦点。而默认情况下,是只能一个TextView获取焦点的。所以,在这里我们需要强制设置焦点。

        我们以两个TextView为例:

        首先,我们创建一个类继承自TextView类,并且重写MarqueeTextView类所有的构造方法,并且重写isFocused()方法,返回值为true,并且将布局文件中的TextView控件改成我们自定义的类,就可以实现多个TextView的跑马灯效果了。

        下面是代码:

        xml代码:

<club.zhanyan.yangjie.marqueetextviewdemo.MarqueeTextView
        android:id="@+id/textViewId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:singleLine="true"
        android:text="我是一个长的TextView,我是一个长的TextView,我是一个长的TextView。" />
<club.zhanyan.yangjie.marqueetextviewdemo.MarqueeTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/textViewId"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:singleLine="true"
        android:text="我是一个长的TextView,我是一个长的TextView,我是一个长的TextView。" />

        Java代码:

 package club.zhanyan.yangjie.marqueetextviewdemo;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView; 
public class MarqueeTextView extends TextView{
    public MarqueeTextView(Context context) {
        supe(context);
    }
    public MarqueeTextView(Context context, AttributeSet attrs) {
        supe(context, attrs);
    }
    public MarqueeTextView(Context context, AttributeSet attrs, defStyleAttr) {
        supe(context, attrs, defStyleAttr);
    }
    @override
    public boolean isFocused() {
        return true;
    }
}

附:

ellipsize的属性:

android:ellipsize=”start”    //省略号显示在开头 "...leng"
android:ellipsize=”end”      //省略号显示在结尾  "gao..."
android:ellipsize=”middle”   //省略号显示在中间 "ga..eng"
android:ellipsize=”marquee”  //以横向滚动的方式显示(必须在获得当前焦点时)

© 著作权归作者所有

共有 人打赏支持
GaoLeng
粉丝 0
博文 1
码字总数 509
作品 0
闵行
私信 提问

暂无文章

不学无数——SpringBoot入门IV

SpringBoot 1.Profiles Spring Profiles能够在不同的环境中使不同的应用配置生效。@Component和@Configuration两个注解都能够通过@Profiles来标记。下面是例子: @Configuration@Profile("b...

不学无数的程序员
24分钟前
2
0
nginx长连接出现504的解决办法

在http 中添加如下 fastcgi_connect_timeout 300s; fastcgi_send_timeout 300s; fastcgi_read_timeout 300s;...

hansonwong
25分钟前
1
0
记一次 Spring Boot多数据源 循环引用问题

如题,升级了一下mybatis版本后出现循环引用的问题。 具体异常如下 ***************************APPLICATION FAILED TO START***************************Description:The depen...

HeyS1
25分钟前
1
0
MongoDB Could not find host matching read preference { mode: \"primary\" } for set repl_shard1

最近在测试 MongoDB 4.0 分片集群 ,搭建好所有节点后,往mongos添加分片的时候,一直报错 Could not find host matching read preference { mode: \"primary\" } for set ,如下 mongos> sh...

xxj123gogo
29分钟前
1
0
linux安装java1.8

# tar -zxvf jdk-8u144-linux-x64.tar.gz vi /etc/profile export JAVA_HOME="/usr/local/java/jdk1.8.0_144" export CATALINA_HOME="/usr/local/tomcat/apache-tomcat-9.0.0.M22" export PA......

八戒八戒八戒
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部