TextView跑马灯
先给大家上效果:
大家日常在使用TextView组件的时候一定遇到过超过一定行数的内容就省略显示的需求和场景,那真的是非常简单了,结合最大行数限制再加上一个
android:ellipsize="end"
就可以完美解决。
但是如果你自己看看ellipsize的众多属性就会发现其实还有个marquee属性
该属性就是跑马灯的意思,于是你惊奇地发现TextView居然已经帮我们实现了跑马灯效果,那是不是就不需要再费脑筋自己写了呢?
是也不是。
其实要想真正实现跑马灯效果,这里还是有一些小门道的,首先你定义的TextView需要是这样:
<androidx.appcompat.widget.AppCompatTextViewandroid:id="@+id/txt"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_margin="16dp"android:background="@drawable/bg_marguee"android:focusableInTouchMode="true"android:marqueeRepeatLimit="marquee_forever"android:padding="16dp"android:ellipsize="end"android:scrollHorizontally="true"android:singleLine="true"android:tag="txt"android:textSize="18sp"android:textStyle="italic|bold"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toBottomOf="@+id/edt_input"tools:ignore="HardcodedText" />
其中以下属性必不可少
android:focusableInTouchMode="true" 控制组件在触摸时能获得焦点
android:marqueeRepeatLimit="marquee_forever" 控制组件在跑马灯轮播时是无限循环的
android:scrollHorizontally="true" 控制可以水平滑动
android:singleLine="true" 控制为单行展示,内容长了单行展示才有跑马灯效果
但是重点来了,重要的事情必须说三遍。
android:ellipsize="marquee" 这个属性不能在xml中定义!!!
android:ellipsize="marquee" 这个属性不能在xml中定义!!!
android:ellipsize="marquee" 这个属性不能在xml中定义!!!
必须在代码中去定义
mTxt = findViewById(R.id.txt)// 只有在代码中动态设置该属性,点击获取焦点的时候才能有跑马灯效果mTxt.ellipsize = TextUtils.TruncateAt.MARQUEEval ss = SpannableString("谁是我们的朋友,谁是我们的敌人,这是革命的首要问题!!!")ss.setSpan(ForegroundColorSpan(resources.getColor(R.color.green)),5,7,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)ss.setSpan(ForegroundColorSpan(resources.getColor(R.color.red)),13,15,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)mTxt.text = ssmTxt.requestFocus()
mTxt.ellipsize = TextUtils.TruncateAt.MARQUEE
最后一定要加上requestFocus()
因为有个比较坑的地方是只有页面上该跑马灯TextView获得焦点的时候才能执行跑马灯效果,否则就会不动。当你点击其他可获取焦点的组件比如另一个EditText时,该跑马灯就暂停滚动了。这个时候只能是
mTxt.setOnClickListener {mTxt.requestFocus()}
设置点击或者触摸事件,让触摸的时候重新获取焦点,那就可以继续滚动跑马灯了。也算一个小坑吧。
TextView跑马灯相关推荐
- Android TextView跑马灯效果与设置文字阴影
TextView跑马灯效果的实现 自定义 一个TextView public class MusicDesText extends TextView {public MusicDesText(Cont ...
- 【Android】不依赖焦点和选中的TextView跑马灯
前言 继承TextView,并仿照源码修改而来,主要是取消了焦点和选中了判断,也不依赖文本的宽度. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民 ...
- 关于有多个Fragment中的textview跑马灯问题
====================问题描述==================== 一个activity里面有多个Fragment,1,2,3,4 其中fragment1中有2个textview ...
- TextView跑马灯效果
转载:http://www.2cto.com/kf/201409/330658.html 一.只想让TextView显示一行,但是文字超过TextView的长度怎么办? 在开头显示省略号 androi ...
- Android TextView跑马灯不动 及属性
<TextView android:text="每一个视图的绘制过程都必须经历三个最主要的阶段,即onMeasure().onLayout()和onDraw(),"andro ...
- android 文字滚动组件,Android textview 跑马灯文字滚动效果
设置如下TextView控件文件的XML: android:id="@+id/textview" android:layout_width="match_parent&q ...
- Android TextView中划线、下划线、跑马灯的简单使用
本人安卓初学者,小白一枚,希望以写博客的方法巩固已学的技能,讲的可能不好,望大家见谅! 不墨迹 直接上 效果图 TextView 中划线 和 下划线 xml文件中(中划线和下划线一样 有个 id 就行 ...
- TextView各种跑马灯
1.textView本身的跑马灯 <TextViewandroid:id="@+id/tv"android:layout_width="match_parent&q ...
- 自定义ListView实现任意View跑马灯效果
自定义ListView实现任意View跑马灯效果 标签(空格分隔): 开源项目 看图 话不多说,先来看下大图效果吧,这里的GIF录制有点渣,不过真实的跑出来的效果还是挺不错的. 前言 最近项目中会加入 ...
- TextView实现跑马灯效果
经常使用TextView会出现这样的情况,有限的空间内只能写一行,然后导致好多文字被"..."表示了,如图: 而且有可能是重要信息被隐藏了,于是就有了跑马灯效果. 实现方式很简单: ...
最新文章
- python strip()函数
- CodeForces - 1263A Sweet Problem(思维,水题)
- 邮宝打印面单尺寸调整_摆脱束缚,自由轻松!无线打印奥利给(上)
- mysql 分表 sphinx_sphinx(coreseek)处理分表的方案
- 面试必考的网络协议相关题目应该如何回答
- 7-27 通讯录的录入与显示 (10 分)
- android河流曲线控件,London | Riverwalk,河流曲线的黄金比例
- 刚刚,阿里发布了一个重磅技术炸弹,70% 的程序员受影响!
- sift算法的主要步骤
- Ubuntu 14.04 执行指定用户的命令
- OpenCV---模板匹配
- 基于FPGA的光口通信开发案例
- windows10怎么卸载计算机,win10易升,详细教您如何彻底卸载删除win10易升
- 扩计算机内存,如何增加计算机内存,三种方法来扩展计算机内存
- Lammps计算纳米压痕—包含全部In文件
- 计算机主机结构和名称图,计算机结构图
- 树莓派教程 - 1.5 树莓派GPIO库wiringPi 使用硬件串口ttyAMA0与ttyS0
- Linux驱动——mmc概念与框架(一)
- 删除AWS绑定的信用卡账户
- [Practical.Vim(2012.9)].Drew.Neil.Tip04学习摘要