TextView跑步灯效果及在特殊情况下无效的解决方式

摘要:
他们可能会要求您定义xml中TextView控件的属性,如下所示。这是真的。字幕没有效果。当我们关闭活动或片段时,我们再次进入。然而,第一次执行是无效的。这样做的原因应该是当TextView获得焦点时。我们可以向TextView动态添加一些事件。为了方便和安全,我们可以将其放入自己定义的控件中。
概述:

  关于在TextView中使用跑马灯效果的样例在网上一搜一大把。他们可能会让你像以下这样来在xml中定义TextView控件的属性。而事实也确是如此。

只是我不知道他们有没有遇到和我一样的问题(事实上我感觉是有的),我们第一次执行程序的时候。跑马灯没有效果,当我们关闭activity或是fragment再次进入的时候。跑马灯的效果又有了。


普通情况:


<TextView
                        android: 
                        android:layout_width="200dp"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:layout_toRightOf="@id/main_has_connected_textView"
                        android:text="TextView"
                        android:singleLine="true"
                        android:ellipsize="marquee"
                        android:focusable="true"
                        android:marqueeRepeatLimit="marquee_forever"
                        android:focusableInTouchMode="true"
                        android:scrollHorizontally="true"
                        android:textSize="22sp" />

改动之后:

如上的代码,一些主要的该设置的属性都已经设置好了。

只是还是会出现第一次执行无效果的情况。

这样的情况出现的原因应该是TextView在获得焦点的时候。会有丢失。我们能够动态地为这个TextView加入一些事件。

只是为了方便和安全性,我们能够将其放在它的自己定义控件中。

这个时候我们就须要在java代码中来动态实现了。

例如以下:

public class FlowTextView extends TextView {
    
    public FlowTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public FlowTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public FlowTextView(Context context) {
        super(context);
    }

    @Override
    public boolean isFocused() {
        return true;
    }

}


xml中的使用与之前的无区别。例如以下:

<com.demo.widgets.FlowTextView
                        android: 
                        android:layout_width="200dp"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:text="TextView"
                        android:singleLine="true"
                        android:textColor="#ffFFFFFF"
                        android:ellipsize="marquee"
                        android:focusable="true"
                        android:marqueeRepeatLimit="marquee_forever"
                        android:focusableInTouchMode="true"
                        android:scrollHorizontally="true"
                        android:textSize="22sp" />



免责声明:文章转载自《TextView跑步灯效果及在特殊情况下无效的解决方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇动软代码生成器的模板生成LVS管理工具--ipvsadm下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Assembly中Load, LoadFrom, LoadFile以及AppDomain, Activator类中相应函数的区别

Assembly和AppDomain的一些关于动态加载程序集的函数有些令人头疼,但细细研究后还是可以将他们区分的。 这些函数大致可以分为四类: 第一类:加载到Load Context内 Load Context: Load Context是所有动态加载程序集首选应该被加载到的地方。 它只能加载在AppDomain信息中的ApplicationBase目录...

自定义View的实现流程

1.继承View组件,比如,LabelView继承了View   2.重写两个构造方法,比如,对于自定义View LabelView   LabelView(Context context),如果该自定义View是通过代码来实例化的,那么,就需要该构造方法; LabelView(Context context, AttributeSet attrs),通过...

Repository模式中,Update总是失败及其解析

在Repository模式中,我的Update方法总是无法更新实体,这个非常郁闷,Update方法如下: 1: public virtual void Update(T entity) 2: { 3: try 4: { 5:...

Neo4J图库的基础介绍(二)-图库开发应用

我们接着Neo4J图库的基础介绍(一)继续介绍Neo4J图库。 JAX-RS是一个用于构建REST资源的Java API,可以使用JAX-RS注解装饰每一个扩展类,从而让服务器处理对应的http请求,附加注解可以用来控制请求和响应的格式,http头和URI模板的格式。 下面看一个服务器扩展实现的示例,允许客户端请求社交网络的两个成员之间的距离 @Pa...

asp.net core mvc剖析:mvc动作选择

一个http请求过来后,首先经过路由规则的匹配,找到最符合条件的的IRouter,然后调用IRouter.RouteAsync来设置RouteContext.Handler,最后把请求交给RouteContext.Handler来处理。在MVC中提供了两个IRouter实现,分别如下: 1,MvcAttributeRouteHandler 2,MvcRou...

转:android中APK开机自动运行

背景知识:当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为android.intent.action.BOOT_COMPLETED。只要在程序中“捕捉”到这个消息,再启动之即可。记住,Android框架说:Don't call me, I'll call you back。我们要做的是做好接...