参考网址:https://www.jianshu.com/p/e6c1b825d322

起初,使用了如下XML布局:

 <TextView
android:id="@+id/tv_person_name"
android:layout_marginTop="16dp"
android:layout_width="125dp"
android:layout_height="wrap_content"
android:text="健康快乐的小..."
android:textSize="20sp"
android:textColor="#CE000000"
android:layout_alignParentLeft="true"
android:layout_marginLeft="85dp"
android:singleLine="true"//设置单行
android:ellipsize="marquee"//跑马灯
android:marqueeRepeatLimit="marquee_forever"//无限循环
android:focusable="true"//获得焦点
android:focusableInTouchMode="true" />

结果是:能暂时实现跑马灯效果,但在多次点击事件之后容易失焦。而且在Android4.4上实现有短暂停顿。

focusable和focusableInTouchMode的区别:https://blog.csdn.net/SylG17/article/details/85047234

曾尝试通过EvenBus重新获取焦点,但是并无卵用。

后来采用自定义跑马灯类:

 public class MarqueeTextView extends AppCompatTextView {
/** 滚动次数 */
private int marqueeNum = -1;//-1为永久循环,大于0是循环次数。`
public void setMarqueeNum(int marqueeNum) {
this.marqueeNum = marqueeNum;
}
public MarqueeTextView(Context context) {
super(context);
setAttr();
}
public MarqueeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setAttr();
}
public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setAttr();
}
/**
* 始终获取焦点
* 跑马灯在TextView处于焦点状态的时候才会滚动
*/
@Override
public boolean isFocused() {
return true;
}
/**
* 设置相关属性
*/
private void setAttr(){
this.setEllipsize(TextUtils.TruncateAt.MARQUEE);//设置跑马等效果
this.setMarqueeRepeatLimit(marqueeNum);//设置跑马灯重复次数
this.setSingleLine(true);//设置单行
}
}

采用自定义跑马灯控件:

 <com.sz.cszj.intelligentrobot.cszjrobot.view.MarqueeTextView
android:id="@+id/tv_person_name"
android:layout_marginTop="16dp"
android:layout_width="125dp"
android:layout_height="wrap_content"
android:text="健康快乐的小..."
android:textSize="20sp"
android:textColor="#CE000000"
android:layout_alignParentLeft="true"
android:layout_marginLeft="85dp"/>

效果:不会失焦,能实现跑马灯效果。但是依然会有卡顿。

最新文章

  1. AngularJs的UI组件ui-Bootstrap分享(十四)——Carousel
  2. 001.libev安装及eclipse下添加libev库链接
  3. MindProject R6025解决
  4. 看2015年TFC游戏大会,云计算何以唱主角
  5. acm pc^2的配置与使用
  6. 006 [翻译] Haneke(一个Swfit iOS缓存类)
  7. 性能测试-Jmeter
  8. Centos 64位安装 EPEL源
  9. JQuery AJAX的嵌套使用
  10. poj 2503 快排+二分
  11. centos7安装httpd和php
  12. Mysql的管理及使用
  13. Go语言-通道类型
  14. 原生js触碰到底部触发函数;
  15. python 迭代器协议和生成器
  16. angular.isNumber()
  17. IIS8.0配置网站,错误提示:用户 &#39;IIS APPPOOL\你的网站名称&#39;登录失败
  18. python之列表【list】
  19. NFS详解
  20. OGG_Oracle GoldenGate简介(概念)

热门文章

  1. iview报错[Vue warn]: Error in render: &quot;TypeError: ctx.injections.tableRoot.$scopedSlots[ctx.props.column.slot] is not a function&quot;
  2. 极*Java速成教程 - (4)
  3. Springcloud 2.x 版本 分布式配置中心
  4. C++中的字符串类
  5. 背包问题: HDU1114Piggy-Bank
  6. es6中let实例应用之一
  7. Python 通过dmidecode获取Linux服务器硬件信息
  8. mkfifo - 创建FIFO(命名管道)
  9. 基于numpy的绘图
  10. pandas 的axis参数的理解