Android TextView设置跑马灯失效

2024-09-06 01:52

本文主要是介绍Android TextView设置跑马灯失效,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.关于问题

TextView失效在网上有详细的解决方案,大部分时候都能够很好的解决问题

下面给出网上的解决方案:

<TextViewandroid:layout_width="100dp"android:layout_height="22dp"tools:text="水浇地放松放松开发的开始放假考试的飞机开了撒酒疯恐龙时代解封了开始的"android:ellipsize="marquee"android:marqueeRepeatLimit="marquee_forever"android:singleLine="true"android:textSize="13sp"android:textColor="@color/black"/>

以上就是一个简单的固定宽高的TextView,显然文字的长度超过了控件的宽度

ellipsize属性官方给出的解释如下:

 意思就是使文本中比视图宽度长的单词省略号,而不是在在中间断开。

该属性的枚举值为

public enum TruncateAt {START,MIDDLE,END,MARQUEE,/*** @hide*/@UnsupportedAppUsageEND_SMALL
}

主要是设置省略号的位置,而其中MARQUEE就是本文要学习的跑马灯效果

2.跑马灯效果

除了在XML布局文件中设置如下属性

android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"

还需要在代码中设置属性,动态设置的目的是为了请求焦点,在界面刷新的时候也能正常展示跑马灯效果

val textView= findViewById<TextView>(R.id.textView)
textView.text = "放假恐龙时代减肥路上看见发了康师傅就开始两地分居老师到家了客服就是"
textView.ellipsize = TextUtils.TruncateAt.MARQUEE
textView.isSingleLine = true
textView.isSelected = true
textView.isFocusable = true
textView.isFocusableInTouchMode = true

3.特殊情况下的处理

以上是结合官方文档说明和网上大多数解决问题的方案得来的,正常情况下可以完美运行

问题1

当前页面存在多个TextView的情况失效:

相信很多同学在开发过程中都遇到过该问题,尤其是RecyclerView和Adapter结合展示列表,

字符串过长要完整展示的情况很多

如果此时出现了刷新才能展示跑马灯或者部分Item跑马灯效果失效,只显示省略号,

这种情况基本都是控件绘制或者刷新未完成的情况下,设置的跑马灯属性失效,解决方案如下

val textView= findViewById<TextView>(R.id.textVuew)
textView.post {textView.text = "放假克里斯多夫就流口水地方康师傅就是了对方开始减肥就是放假克里斯多夫就凉快"textView.ellipsize = TextUtils.TruncateAt.MARQUEEtextView.isSingleLine = truetextView.isSelected = truetextView.isFocusable = truetextView.isFocusableInTouchMode = true
}

控件增加post方法的回调,类似于一个Handler,把控件的刷新和绘制结果通过post方式发送到主线成。

问题2

给TextView设置动态文本,文本内容变化的时间未知,设置定时器给TextView设置文本,导致文本跑马灯在未完成的情况不断重置

这种情况,需要缓存当前文本内容,只有在文本内容发生改变是才设置,否则相同的文本,用定时器设置时会不停重置跑马灯动画。

这篇关于Android TextView设置跑马灯失效的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140672

相关文章

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局