文档章节

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
闵行

暂无文章

面向对象设计原则(OOP)

单一职责原则(Single responsibility principle)又称单一功能原则。它规定一个类应该只有一个发生变化的原因。 核心原则:低耦合,高内聚。 一个类,应该只有一个引起它变化的原因,也就是...

gackey
35分钟前
2
0
C++ 锁

C++提供了两种常用的锁,std::lock_guard<Lockable &T>和std::unique_lock<Lockable &T>。通常使用场景下,这两个锁用法一致。即,在构造锁对象时上锁,在析构锁对象时解锁。使用户从上锁/解...

yepanl
38分钟前
2
0
Kali Linux Docker 練習

docker pull kalilinux/kali-linux-docker docker run -t -i kalilinux/kali-linux-docker /bin/bash apt-get update apt-get install htop apt-get install nmap apt-get install wpscan ap......

BaiyuanLab
今天
2
0
通俗大白话来理解TCP协议的三次握手和四次分手

最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就...

onedotdot
今天
2
0
TiDB 在爱奇艺的应用及实践

爱奇艺,中国高品质视频娱乐服务提供者,2010 年 4 月 22 日正式上线,推崇品质、青春、时尚的品牌内涵如今已深入人心,网罗了全球广大的年轻用户群体,积极推动产品、技术、内容、营销等全方...

TiDB
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部