Android Kotlin TextView跑马灯效果
16lz
2021-01-23
有时候我们在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" />
/** * 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() }}
更多相关文章
- android api Demo之自定义Animation,实现3D旋转效果
- Android Layout XML属性研究--android:layout_marginBottom
- android layout以及一些常用的android控件属性
- Android 组件属性
- 让Activity变成一个窗口:Activity属性设定
- 常用的布局和View常用属性