继承TextView获取焦点实现跑马灯

 1 public class MarqueeFocuseTextView extends TextView {
 2
 3     public MarqueeFocuseTextView(Context context, AttributeSet attrs,
 4             int defStyle) {
 5         super(context, attrs, defStyle);
 6     }
 7
 8     public MarqueeFocuseTextView(Context context, AttributeSet attrs) {
 9         super(context, attrs);
10     }
11
12     public MarqueeFocuseTextView(Context context) {
13         super(context);
14     }
15
16     @Override
17     @ExportedProperty(category = "focus")
18     public boolean isFocused() {
19         //始终取得焦点
20         return true;
21     }
22
23     @Override
24     protected void onFocusChanged(boolean focused, int direction,
25             Rect previouslyFocusedRect) {
26         //写这个方法是为了去掉父类的方法
27         //super.onFocusChanged(focused, direction, previouslyFocusedRect);
28     }
29 }

关于MarqueeText类中为什么要复写onFocusChanged()方法,那是因为如果不写,在Textview 获得焦点后,再失去焦点时 字就会停止“跑”了,所以如果想让它一直跑下去就复写onFocusChanged(),并且里面什么也不做(主要是不能调用父类的方法)

1 <com.zzqhfuf.mobilesafefb.views.MarqueeFocuseTextView
2         android:id="@+id/tv_index_newmessage"
3         android:layout_width="match_parent"
4         android:layout_height="wrap_content"
5         android:ellipsize="marquee"
6         android:singleLine="true"
7         android:text="点过看过千万不要错过,错过悔一生啊啊啊啊啊啊啊啊啊!!!!!!!!!!!!!!!!!"
8         android:textColor="@color/black"
9         android:textSize="15sp"/>

textview显示的内容一定要大于你设置的宽度,不然无法实现跑马灯的效果

当然也可以不重新创建一个类,只需在xml中的TextView写入

1         android:focusable="true"
2         android:focusableInTouchMode="true"

就可以实现跑马灯的效果

时间: 2024-10-24 21:28:46

继承TextView获取焦点实现跑马灯的相关文章

Android:TextView 自动滚动(跑马灯) (转)

Android:TextView 自动滚动(跑马灯) TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true" 2.设置可滚到,或显示样式:android:ellipsize="marquee" 3.TextView只有在获取焦点后才会滚动显示隐藏文字,因此需要在包中新建一个类,继承TextView.重写isFocused方法,这个方法默认行为是,如果TextView获得焦点,方法返回true,失

Android自定义之TextView跑马灯的监听

TextView都有跑马灯的效果,如果说让你去监听跑马灯效果的执行,我觉得这个需求有点二了,但是也要实现. 思路: 1.自定义View  继承TextView   这种方法过于麻烦,只是监听一个跑马灯而已. 2.自定义SPan.简单好用,扩展TextView的功能. 关键代码如下: @Override public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, in

Android TextView跑马灯效果

TextView跑马灯简单效果 <!--简单示例--> <TextView android:text="@string/longWord" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView1" android:ellipsize="marquee&quo

android 自定义文字跑马灯 支持拖拽,按住停止滚动,自定义速度

android的textview自带跑马灯效果,一般使用足够了.不过也有不一般的情况,所以我实现了一个自定义textview控件,用来针对这种不一般情况下的跑马灯效果实现. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

android开发_ListView跑马灯

Focus on technology, enjoy life!-- QQ:804212028 浏览链接:http://blog.csdn.net/y18334702058/article/details/44624305 主题:ListView跑马灯 -TextView之所以需要跑马灯,是由于文字太长,或者是为了展现这种效果. 关键代码: android:singleLine="true" android:ellipsize="marquee" android:f

Android 跑马灯效果与EditText冲突

近期一个项目,因为布局TextView内容太长了.首先想到的就是跑马灯效果,所以就把TextView又一次自己定义了,尽管跑马灯效果实现了.只是导致了还有一个问题就是EditText输入问题,当第一次点击EditText的时候可以弹出软键盘,只是把软键盘关闭后,再次点击TextView就弹不出软键盘,百思不得其解.所以就在重写EditText加入了一个点击事件.当每次用户点击的时候弹出软件盘,尽管可以点击EditText弹出软键盘,可是无法输入内容,不用想也是焦点问题,可是页面上的EditTex

Android--最强跑马灯

Android 跑马灯已经有很多版本,从最基本的TextView,到重写TextView使TextView取消焦点限制,还有重写TextView利用ScrollTo方法写的,基本都能满足一般需要.然而在使用过程中,发现一些意外---有时会不播放,刷新线程还在继续但就是不播放,最后在github上找到一个用动画实现跑马灯的项目(项目地址:https://github.com/ened/Android-MarqueeView,再次对作者表示感谢),改造了一番,总算ok了.以后再也不用为跑马灯烦恼了.

TextView不用获取焦点也能实现跑马灯

1.写一个类继承TextView [java] view plaincopy package com.example.tt; import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; import android.widget.TextView; public class ScrollingTextView extends TextView { public Sc

[Android TV 按键响应]listview的textview跑马灯在鼠标控制下失效的问题

问题:遥控按键选中的选项有跑马灯效果,但是鼠标事件来说,没有跑马灯效果 解题过程:重写一个类继承textview,永远获取焦点,不行.即使我再OnhoverListener里面实现onHover并且对textview获取了焦点,但是仍旧不行 解决方法:最后重写一个类继承textview,永远获取焦点,并且对textview调用了setSelected(true)之后就可以了. public class MarqueeTextView extends TextView { public Marqu