TextView: android:ellipsize="marquee" 跑马灯效果无效的问题
今天练习的时候想实现一个文字的跑马灯效果,本来想自己手动实现的,不过突然想起来android里的TextView属性似乎自带了这个效果,叫: android:ellipsize ,平时都是把它的属性值设置成 end ,表示文字超出了一定的范围就显示省略号,如果要实现跑马灯的效果,就需要将它的属性值设置成 marquee ,就是: android:ellipsize="marquee" 。我只记得它有这么个属性值,但是从来没用过,今天真正用了一次才发现这个属性值并没有那么简单:
按照惯例,一般用到这个属性值,就说明文字的长度超过了TextView的长度,而且一般都是在单行文本中进行滚动显示的。所以我先将TextView的属性设置如下:
<TextView
android:layout_width="100dip"
android:layout_height="wrap_content"
android:text="请使用手机扫描二维码,然后连接设备请使用二维码扫描手机,然后连接设备请使用二维码扫描手机,然后连接设备请使用二维码扫描手机,然后连接设备"
android:ellipsize="marquee"
android:singleLine="true"
/>
按照我的理解,文本长度是肯定会超过TextView的显示长度的,而我也确实将TextView设置成单行, android:ellipsize 的属性值指定为 marquee 了,但遗憾的是在手机上跑起来并没有任何的效果。没办法,只能求教于百度,网上的说法有很多,大概有以下几种:
第一种做法:新建一个继承于TextView的自定义View,重写其方法
参考链接:https://blog.csdn.net/shanshan_1117/article/details/78616901
这种方法我没有试,或许可行,但我很不喜欢,既然android自带了这个属性,直接用这个属性就好了,为了实现一个效果(这个效果还是系统自带的)还要去新建一个View,得不偿失。
第二种做法:在xml文件中指定 android:textIsSelectable="true" 或是在代码中设置 setSelected(true)
参考链接:https://www.cnblogs.com/ufreedom/p/4248142.html
这位博主写了很多,也分析了很多,最终结论就是上面的两种办法,说实话我挺佩服他的,能钻研的这么细(换做是我可能就自定义一个View了。。。我也只是在实在没办法的时候才去看源码),于是照着他的办法试了下,给TextView添加了 android:textIsSelectable="true" 属性,满心欢喜的跑了一下看了下效果,结果还是没有用。。。也许这位博主的办法确实有用,只是我的手机太特殊了(华为P10)。
第三种做法:在xml文件中同时指定 android:focusable="true" 和 android:focusableInTouchMode="true"
参考链接:https://www.cnblogs.com/Gaojiecai/p/3142783.html
这位博主同样也写了很多,也列举了好几种情况,有些办法甚至于还要在TextView上加 android:clickable="true" ,感觉怪怪的,我在手机上跑了下,同样也不行,无法实现跑马灯的效果。但是,需要特别说明的是,这种办法其实是有效的,如果直接在手机上跑,跑马灯效果确实是没有,但我手头刚好有一个USB口的遥控器,可以通过上下导航键选中到TextView,如果是通过遥控器上的上下导航键选中这个TextView,那么这个TextView的跑马灯效果就显示出来了,但是我们用的是手机,进来的时候就要显示。
其它做法:在代码中对TextView进行修改
这种做法的链接就不贴了,网上有很多,但还是那个问题,设置一个TextView的效果,还要分别在XML和代码中分别定义,个人实在是不喜欢。
我的做法:
仔细看了下第三种做法中博主的描述,大概觉得,要想使TextView拥有跑马灯的效果,那么这个TextView就一定要能够获取到焦点,于是我在它的做法上进行了修改:
<TextView
android:layout_width="200dip"
android:layout_height="wrap_content"
android:text="请使用二维码扫描手机,然后连接设备请使用二维码扫描手机,然后连接设备请使用二维码扫描手机,然后连接设备请使用二维码扫描手机,然后连接设备"
android:ellipsize="marquee"
android:singleLine="true"
android:focusableInTouchMode="true"
>
<requestFocus/>
</TextView>
再次运行试了下,跑马灯效果有了:

我反复试了下,这个 android:focusableInTouchMode="true" 属性是必须的, android:focusable="true" 属性却不是必须的。
最后,需要声明下,我也只是在我的手机下(华为P10)运行通过,别的手机我没有试过,我相信上面的几位博主肯定也是在各自的手机上试过了才会发表博文的,android手机众多,我也不敢保证自己的做法一定在所有的手机上都有效。
TextView: android:ellipsize="marquee" 跑马灯效果无效的问题的更多相关文章
- android:ellipsize实现跑马灯效果总结(转)
最近无意间看到了涉及到跑马灯效果的代码,于是在网上查阅了很多资料,在这里对自己看的一些文章进行一下总结,顺便加上自己的一些体会. 让我们一步步逐渐向下. 首先我们要实现走马灯这样一个效果,通常来说 ...
- android:ellipsize实现跑马灯效果总结
最近无意间看到了涉及到跑马灯效果的代码,于是在网上查阅了很多资料,在这里对自己看的一些文章进行一下总结,顺便加上自己的一些体会. 让我们一步步逐渐向下. 首先我们要实现走马灯这样一个效果,通常来说都是 ...
- Android TextView 横向滚动(跑马灯效果)
Android TextView 中当文字比較多时希望它横向滚动显示,以下是一种亲測可行的方法. 效果图: 1.自己定义TextView,重写isFocused()方法返回true,让自己定义Text ...
- android中实现跑马灯效果以及AutoCompleteTestView与MultiAutoCompleteTextView的学习
跑马灯效果 1.用过属性的方式实现跑马灯效果 属性: android:singleLine="true" 这个属性是设置TextView文本中文字 ...
- android 怎么实现跑马灯效果
自定义控件 FocusedTextView, 使android系统误以为它拥有焦点 public class FocusedTextView extends TextView { public Foc ...
- Android 自定义View跑马灯效果(一)
今天通过书籍重新复习了一遍自定义VIew,为了加强自己的学习,我把它写在博客里面,有兴趣的可以看一下,相互学习共同进步: 通过自定义一个跑马灯效果,来诠释一下简单的效果: 一.创建一个类继承View, ...
- Android textView点击滚动(跑马灯)效果
布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to ...
- marquee跑马灯效果的相关属性
介绍HTML设置滚动文字marquee的相关属性 ㈠文字滚动标签 设置文字滚动使用<marquee></marquee>标签,可以再标签里面设置字体的颜色,字号,字体大小等. ...
- Android学习总结——TextView跑马灯效果
Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1.android:ellipsize="marquee" 2.TextView必须单行显示,即内容必须 ...
随机推荐
- ssmtp脚本发中文邮件的笔记
( echo "From:<test@abc.com>"; \ echo "TO:def@abc.com"; \ echo "Subjec ...
- 学了 C 语言到底能做什么, 能从事什么工作?
前言 经常有小伙伴问我,你是做C/C++的,那学C语言可以做什么呢?尤其是还在学校的同学,感觉自己学了很久,什么也做不了,一度怀疑自己是不是不适合程序员这个方向. 开始我都是直接说可以开发嵌入式啊,做 ...
- Minio对象存储
目录 Minio对象存储 1.概述 2.功能特性 3.2.多节点 3.3.分布式 4.分布式minio集群搭建 4.1.集群规划 4.3.编写集群启动脚本(所有节点) 4.4.编写服务脚本(所有节点) ...
- 2013.6.24 - OpenNE第四天
今天晚上跟师兄讨论,这那几篇论文,对于<领域多词表 达翻译对的自动抽取及其应用>那篇,我的感觉是跟实体识别不太吻合.他的大概意思就是先讲所有有可能的多词表达都找出来,然后在用C-value ...
- Problem G: STL——整理唱片(list的使用)
#include<iostream> #include<list> #include<iterator> #include<algorithm> usi ...
- 移动App性能评测与优化-Android内存测试 ,DVM原理
常见的测试方法包括Monkey/UIAutomator类的常规压力测试,大数据/操作的峰值压力测试,长时间运行的稳定性测试等. 前提: 测试准备:版本是纯净版本,不应该附加多余的log和调试用组件. ...
- LG4213 【模板】杜教筛(Sum)和 BZOJ4916 神犇和蒟蒻
P4213 [模板]杜教筛(Sum) 题目描述 给定一个正整数$N(N\le2^{31}-1)$ 求 $$ans_1=\sum_{i=1}^n\varphi(i)$$ $$ans_2=\sum_{i= ...
- (尚009)Vue列表渲染
变异方法:说白了就是对原方法进行了包装,包装后实现了2个功能1:实现原方法的功能;2.更新界面. 1.test009.html <!DOCTYPE html><html lang=& ...
- 结构化异常SEH处理机制详细介绍(二)
本文将全面阐述__try,__except,__finally,__leave异常模型机制,它也即是Windows系列操作系统平台上提供的SEH模型.SEH实际包含两个主要功能:结束处理(termin ...
- HTML5新增常用标签
1.header 标签定义文档的页眉(介绍信息). <body> <article> <header> <h1>What Does WWF Do?< ...