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 WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

Android如何获取当前CPU频率和占用率

《Android如何获取当前CPU频率和占用率》最近在优化App的性能,需要获取当前CPU视频频率和占用率,所以本文小编就来和大家总结一下如何在Android中获取当前CPU频率和占用率吧... 最近在优化 App 的性能,需要获取当前 CPU视频频率和占用率,通过查询资料,大致思路如下:目前没有标准的

如何关闭 Mac 触发角功能或设置修饰键? mac电脑防止误触设置技巧

《如何关闭Mac触发角功能或设置修饰键?mac电脑防止误触设置技巧》从Windows换到iOS大半年来,触发角是我觉得值得吹爆的MacBook效率神器,成为一大说服理由,下面我们就来看看mac电... MAC 的「触发角」功能虽然提高了效率,但过于灵敏也让不少用户感到头疼。特别是在关键时刻,一不小心就可能触

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

MySQL进阶之路索引失效的11种情况详析

《MySQL进阶之路索引失效的11种情况详析》:本文主要介绍MySQL查询优化中的11种常见情况,包括索引的使用和优化策略,通过这些策略,开发者可以显著提升查询性能,需要的朋友可以参考下... 目录前言图示1. 使用不等式操作符(!=, <, >)2. 使用 OR 连接多个条件3. 对索引字段进行计算操作4

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

MySQL8.0设置redo缓存大小的实现

《MySQL8.0设置redo缓存大小的实现》本文主要在MySQL8.0.30及之后版本中使用innodb_redo_log_capacity参数在线更改redo缓存文件大小,下面就来介绍一下,具有一... mysql 8.0.30及之后版本可以使用innodb_redo_log_capacity参数来更改

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接