有时候我们在xml中配置跑马灯属性,最后却发现有时有效果,而有时却没有效果,这是为什么呢。

我们大概是如此配置的

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

这样配置是没有问题的,问题出在TextView上面,因为TextView焦点丢失了。

提示:maxLines属性不支持跑马灯


解决方案(来自阿里):

只需要重写父类方法IsFocused(),返回true,即可解决

override fun isFocused(): Boolean {    return true}


使用方法:与正常TextView使用方式相同

    android:id="@+id/marquee"    android:layout_width="match_parent"    android:text="Start123132132132132132132132132132132132123123End"    android:layout_height="wrap_content" />


class源码

/** * Created by work on 2017/8/30. * 跑马灯 * @author chris zou * @mail chrisSpringSmell@gmail.com */open class TextViewMarquee : AppCompatTextView {    constructor(context: Context) : super(context)    constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)    override fun isFocused(): Boolean {        return true    }}

自动配置,无需在xml进行配置

/** * Created by work on 2017/8/30. * 跑马灯-无限循环 * @author chris zou * @mail chrisSpringSmell@gmail.com */class TextViewAlwaysMarquee : TextViewMarquee {    constructor(context: Context) : super(context) {        init()    }    constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) {        init()    }    override fun isFocused(): Boolean {        return true    }    private fun init() {        ellipsize = TextUtils.TruncateAt.MARQUEE        marqueeRepeatLimit = -1        setSingleLine()    }}




更多相关文章

  1. android api Demo之自定义Animation,实现3D旋转效果
  2. Android Layout XML属性研究--android:layout_marginBottom
  3. android layout以及一些常用的android控件属性
  4. Android 组件属性
  5. 让Activity变成一个窗口:Activity属性设定
  6. 常用的布局和View常用属性

随机推荐

  1. [置顶] 进击的Android注入术《三》
  2. 《Android移动应用基础教程》(Android Stu
  3. Android 开发之 ---- 底层驱动开发(一)
  4. 探索Android软键盘的疑难杂症
  5. Android(安卓)App组件之Fragment说明和示
  6. Android(安卓)Java包
  7. [5] Zygote
  8. Android 使用shape来优化界面效果
  9. 【Android NDK 开发】Ubuntu 函数库交叉
  10. mac上的android apk安装器