如何实现TextView的Marquee效果

往往看到一些应用的标题栏中当标题超出时便会自动滚动

这篇文章要讲的就是如何去实现TextView的Marquee效果

其实TextView已经自带了如何实现滚动的属性

 

 

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

 通过上面的属性设置就能让TextView滚动起来。当然也可以通过代码去设置。


但是当设置完之后发现并没有滚动起来,原来TextView滚动的前提是这个空间必须要获得焦点。TextView需要必须处于focus状态。


在TextView的父类View中有一个方法isFocused(),系统通过这个方法去判断一个空间是否获得焦点。

所以我们就有了解决方案:

写一个子类继承TextView,重写isFocused()方法,直接返回true。当通过这个函数去判断TextView有没有获得焦点时,总是返回获得焦点于是我们的TextView就开始滚动起来了。代码很简单:

public class AlwaysMarqueeTextView extends TextView {

    /**
     * constructor
     * @param context Context
     */
    public AlwaysMarqueeTextView(Context context) {
          super(context);
    }

    /**
     * constructor
     * @param context Context
     * @param attrs AttributeSet
     */
    public AlwaysMarqueeTextView(Context context, AttributeSet attrs) {
          super(context, attrs);
    }

    /**
     * constructor
     * @param context Context
     * @param attrs AttributeSet
     * @param defStyle int
     */
    public AlwaysMarqueeTextView(Context context, AttributeSet attrs, int defStyle) {
          super(context, attrs, defStyle);
    }

    
    @Override
    public boolean isFocused() {
          return true;
    }
    }
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值