当多个TextView要使用跑马灯的效果时需要注意的问题

当多个TextView要使用跑马灯的效果时需要注意的问题

问题的原因:

<TextView
android:id="@+id/tv_marquee1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:text="我是最棒的,我是最棒的,我是最棒的,我是最棒的,我是最棒的,我是最棒的" />

当设置属性focusable/focusableInTouchMode这两个属性的时候,会出现抢夺焦点的情况,此时就会出项一个一个TextView在转动,另一个不动的情况.

解决的方法:

自定义一个MarqueeTextview控件继承自TextView,覆盖其中的isFocused()方法.

xml布局部分:

<com.keke.marqueetextviewdemo.MarqueeTextview
       android:id="@+id/tv_marquee1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:singleLine="true"
       android:ellipsize="marquee"
       android:focusable="true"
       android:focusableInTouchMode="true"
       android:text="我是最棒的,我是最棒的,我是最棒的,我是最棒的,我是最棒的,我是最棒的" />

代码部分:
package com.keke.marqueetextviewdemo;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

public class MarqueeTextview extends TextView {

    public MarqueeTextview(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public MarqueeTextview(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }

    public MarqueeTextview(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    @Override
    public boolean isFocused() {
        return true; //返回值为true,使得所有的TextView都能够获取到焦点.
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值