TextView的跑马灯效果实现
TextView的跑马灯效果实现
问题描述
当文字内容过长,但是只允许显示一行时,可以将文字显示为跑马灯效果,即文字滚动显示。
代码实现
第一种方法实现
先查询TextView控件的属性,得到以下信息:
- android:ellipsize=”marquee”
TextView采用跑马灯属性. - android:marqueeRepeatLimit=”marquee_forever”
设置重复滚动的次数,marquee_forever表示无限次.
在设置了上面两个属性之后,还需要设置两个属性,使得TextView可以获得焦点,滚动起来,不获取焦点,TextView并不会滚动。
- android:focusableInTouchMode=”true”
在Touch模式下可以获取焦点。 - android:focusable=”true”
TextView可以获取焦点。
TextView的设置属性如下:
<TextViewandroid:id="@+id/tv"android:layout_width="400dp"android:layout_height="wrap_content"android:layout_centerInParent="true"android:ellipsize="marquee"android:focusableInTouchMode="true"android:focusable="true"android:gravity="center"android:marqueeRepeatLimit="marquee_forever"android:singleLine="true"android:text="Hello World!相当长的内容,只能显示一行,内容太多,显示不下,所以采用跑马灯方式显示,哈哈哈哈哈。。。"
/>
这种方法实现存在一个问题,就是当其他控件获取焦点之后,TextView没有了焦点,则会停止跑马灯效果。
在TextView控件下面添加一个EditText控件,当点击EditText控件时,EditText控件将会获得焦点,TextView将会失去焦点,代码如下:
<TextViewandroid:id="@+id/tv"android:layout_width="400dp"android:layout_height="wrap_content"android:layout_centerInParent="true"android:ellipsize="marquee"android:focusableInTouchMode="true"android:focusable="true"android:gravity="center"android:marqueeRepeatLimit="marquee_forever"android:singleLine="true"android:text="Hello World!相当长的内容,只能显示一行,内容太多,显示不下,所以采用跑马灯方式显示,哈哈哈哈哈。。。" /><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:layout_below="@id/tv"/>
运行代码之后,点击EditText,上面的TextView就会停止跑马灯效果,所以如果布局上有其他控件就不适合第一种方式。
第二种方法实现
通过修改TextView的isFocus()方法,使其返回为true,可以一直获取焦点。代码如下:
public class FocusTextView extends TextView{public FocusTextView(Context context) {super(context);}public FocusTextView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);}public FocusTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overridepublic boolean isFocused() {return true;}
}
FocusTextView的使用为:
<com.zhangmiao.sixproject.FocusTextViewandroid:id="@+id/focus_tv"android:layout_width="400dp"android:layout_height="wrap_content"android:layout_centerInParent="true"android:ellipsize="marquee"android:gravity="center"android:marqueeRepeatLimit="marquee_forever"android:singleLine="true"android:layout_below="@id/tv"android:text="Hello World!相当长的内容,只能显示一行,内容太多,显示不下,所以采用跑马灯方式显示,哈哈哈哈哈。。。"
/>
这种方式就不会有第一种方式的问题。
总结
第一种方式实现方便快捷,但是存在被其他控件夺取焦点之后效果消失的问题。
第二种方式需要实现一个类去继承TextView,重写isFocus()方法,没有第一种方式的问题。
推荐第二种方式。
联系方式:1006299425@qq.com,有问题欢迎大家指出。
转载于:https://www.cnblogs.com/zhangmiao14/p/8759282.html
TextView的跑马灯效果实现相关推荐
- TextView的跑马灯效果(AS开发实战第二章学习笔记)
TextView的跑马灯效果 跑马灯用到的属性与方法说明 singleLine 指定文本是否单行显示 ellipsize 指定文本超出范围后的省略方式 focusable 指定是否获得焦点,跑马灯效果 ...
- android实现跑马灯效果,TextView实现跑马灯效果 就这么简单!
一.方法 这里我们用两种方法来实现跑马灯效果,虽然实质上是一种 实质就是: 1.TextView调出跑马灯效果 2.TextView获取焦点 第一种: 1.TextView调出跑马灯效果 androi ...
- TextView实现跑马灯效果
经常使用TextView会出现这样的情况,有限的空间内只能写一行,然后导致好多文字被"..."表示了,如图: 而且有可能是重要信息被隐藏了,于是就有了跑马灯效果. 实现方式很简单: ...
- Android studio | From Zero To One ——TextView实现跑马灯效果及聊天室、文字直播间
================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...
- TextView跑马灯效果
转载:http://www.2cto.com/kf/201409/330658.html 一.只想让TextView显示一行,但是文字超过TextView的长度怎么办? 在开头显示省略号 androi ...
- Android自定义不需要焦点的TextView以实现跑马灯效果
使用原生的TextView实现"跑马灯"效果,需要特别注意其是否获取到了焦点(特别是程序当中有多个需要赋值的 Textview或进度条之类的需要改变其值的View);TextVie ...
- android:ellipsize = marquee 跑马灯,Android基于TextView属性android:ellipsize实现跑马灯效果的方法...
本文实例讲述了Android基于TextView属性android:ellipsize实现跑马灯效果的方法.分享给大家供大家参考,具体如下: Android系统中TextView实现跑马灯效果,必须具 ...
- 圣诞节祝福小Demo:JingleBells背景音乐+礼物闪烁下落+跑马灯效果
源码已经上传至我的github上:https://github.com/junmei520/MyChristmas 同时我在微博上也以视频的形式展示了Demo的运行效果:http://weibo.co ...
- Android TextView跑马灯效果与设置文字阴影
TextView跑马灯效果的实现 自定义 一个TextView public class MusicDesText extends TextView {public MusicDesText(Cont ...
最新文章
- python isodd()判断奇偶_位运算(1的个数;2.判断奇偶)
- linux监控(陆续补充)
- copper实现图片的裁剪和上传(1)
- checkbox管理
- 【登录异常解决】Ubuntu 输入正确的密码后重新返回到登陆界面
- sense chrome扩展工具安装问题
- node express 学习笔记
- 图像检索中相似度度量公式:各种距离
- Debian耳机声音问题
- JDK 8中几乎命名的方法参数
- 实验 5 编写、调试具有多个段的
- 2012年12月第三个周末
- 盒子模型的各种高度记录
- 启动服务_用控制台启动一个wcf服务
- Vue.js(2.x)之插值
- linux deepin 15.9双系统,windows10安装双系统Deepin15.9遇到的坑
- 永磁同步电机转子磁链_采用冻结磁导率的瞬态场永磁同步电机交直轴电感计算...
- 十进制转十二进制-复试练习
- python表示倍数的英语句型_英语倍数表达法
- 自定义设置HTTP响应头
热门文章
- 【知识图谱】知识表示与知识建模
- python删除所有core文件_python – 从pandas.core.series.Series中删除前导零
- 二进制在计算机电路中得到广泛的应用,模拟电子和数字电子技术的区别及应用...
- php调用c语言库,使用C语言给php写扩展
- 极致无边界!2021 神策数据 Tech-Day 即将开幕
- 桑文锋的数据“长征”
- 再见,汉斯·罗斯林,你用数据让宏大的问题变有趣 | 好奇心小数据
- Linux编程 20 shell编程(shell脚本创建,echo显示信息)
- 关于Hexo6.0搭建个人博客(github+Google-收录篇)
- 解决:MVC对象转json包含\r \n