文档章节

TextView实现跑马灯效果

GaoLeng
 GaoLeng
发布于 2016/03/03 17:11
字数 509
阅读 124
收藏 6
点赞 1
评论 0
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
闵行

暂无文章

JVM学习手册(一):查看堆内存使用情况以及排错

平时出现内存溢出以及死锁,一般处理方式都是查看日志,找到抛出异常的代码行,然后本地分析代码,但是这样对于线上排查十分糟糕,这段时间在研究JVM发现了几个比较好的工具和指令. 1.针对频繁GC和...

勤奋的蚂蚁
1分钟前
0
0
Java IO类库之ObjectInputStream和ObjectOutPutStream

一、ObjectOutputStream 1 - ObjectOuputStream介绍 ObjectOutputStream(对象字节输出流),用于将一个序列化对象写入到创建ObjectOutputStream时传入的底层字节输入流中,通过源码可知该类继...

老韭菜
14分钟前
0
0
17.TCP:传输控制协议

介绍 TCP和UDP使用同一网络层(IP),但TCP提供了面向连接、可靠的传输层服务 TCP传输给IP层的信息单位称为报文段或段 TCP通过如下方式保证可靠性: 应用数据被分割成TCP认为最合适发送的数据...

loda0128
23分钟前
0
0
重装Oracle时出现environment variable "PATH"错误的解决办法

在win7 64位下重新安装oracle 11g,一直报environment variable "PATH"的错误,按说明将path里多余的路径删除,但没办法解决。选择忽略错误继续安装,装一半会报CRC错误,还是安装失败。最好...

良言
28分钟前
0
0
TensorFlow 全连接的mnist

全连接的mnist import tensorflow as tf# 导入 MINST 数据集from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("MNIST_data/", one_ho......

阿豪boy
29分钟前
0
0
JAVA 三种WebService 规范

JAVA 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。 1. Jaxws(掌握) JAX-WS 的全称为 Java API for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服务...

onedotdot
47分钟前
0
0
将博客搬至CSDN

将博客搬至CSDN

xpbob
48分钟前
1
0
Aidl进程间通信详细介绍

目录介绍 1.问题答疑 2.Aidl相关属性介绍 2.1 AIDL所支持的数据类型 2.2 服务端和客户端 2.3 AIDL的基本概念 3.实际开发中案例操作 3.1 aidl通信业务需求 3.2 操作步骤伪代码 3.3 服务端操作...

潇湘剑雨
今天
0
0
python爬虫日志(3)下载图片

import urlliburl='https://xxx.jpg'#图片地址res=urllib.request.urlopen(url)#此函数用于对url的访问data=res.read() #字节流with open(r'D:\1.jpg',"wb") as code: c...

茫羽行
今天
0
0
vue中$emit的用法

1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。 vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( event, fn );//监听event事件后运...

JamesView
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部