解决一个页面多个跑马灯显示

在Android开发中,创建多个跑马灯效果看似简单,但遇到的问题是多个跑马灯无法同时工作。原因在于TextView的跑马灯依赖于获取焦点。通过设置TextView属性,如`ellipsize="marquee"`、`focusable="true"`等,并尝试让每个TextView获取焦点,发现只能有一个显示滚动。为了解决这个问题,需要自定义一个TextView类,继承自TextView,重写构造方法和isFocused()方法,始终返回true,确保每个实例都能保持焦点并显示跑马灯效果。应用自定义的TextView后,实现了预期的多个跑马灯同时滚动的视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发过程中肯定会有各种各样的项目需求,里面就包括一个页面展示多个跑马灯的效果,刚开始的时候感觉不就是多写几个跑马灯吗?有什么难度啊!于是就动手立刻去实现这个功能

1、新建Android工程

2、在MainActivity默认界面中修改自动生成的TextView属性

//当显示内容超出了文本框,多余的部分marquee滚动处理

android:ellipsize="marquee"

//是否允许获取焦点
        android:focusable="true"

//是否进去触摸输入模式
        android:focusableInTouchMode="true"

//是否为单行显示,如果是true则超出的部分用……代替
        android:singleLine="true"

3、运行效果如图


这样一来就实现跑马灯的效果了,重新在一个不就行啦,结果呢,是这个样子的


这个好像不是我们要的结果啊,为什么会这样的?那是因为在android系统中,TextView要想实现跑马灯效果就必须的获取焦点才可以,我们在xml文件里也设置相应的属性了啊?为什么还不可以,因为你用的是Android系统自己的TextView,当某一个控件requestFocus()时就会把其他的控件焦点给抢去,所以在这里需要我们去重新自定义一个TextView,新建一个class继承TextView,重写里面的构造方法,最后在重写一个isFocused()方法,最后return true;最后把xml文件中的TextView替换成我们自定义的TextView,再来运行一下效果如下


这时我们想要的效果就出来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值