大家可能都尝试过TextView的跑马灯效果,效果很酷,但是有一个缺陷,TextView只能在获得焦点的情况下才能显示跑马灯效果。我原先试过重写onDraw()函数,运行成功,但是代码太过烦琐,时间长了自己都懒得看了,一直想找个好的方法把它剃掉,后来无意中遇到下面的方法,给大家推荐一下:
方法依然是重写TextView,但是关键看重写哪里,(后悔当初没好好看就直接重写onDraw()了):
public class ScrollingTextView extends TextView {
public ScrollingTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public ScrollingTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScrollingTextView(Context context) {
super(context);
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
if(focused)
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
@Override
public void onWindowFocusChanged(boolean focused) {
if(focused)
super.onWindowFocusChanged(focused);
}
@Override
public boolean isFocused() {
return true;
}
}
关键的关键就是在isFocused函数上,大家有空可以看看TextView的源码,上面很清楚。建议大家没事的时候多看看源码,可以从中学到很多好东西。
使用时如下,比如我的自定义类在包com.wlei.test下面:
<com.wlei.test.ScrollingTextView
android:text="Really Long Scrolling Text Goes Here.... ..... ............ .... ...."
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:id="@+id/TextView03"
android:padding="5dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
原文详见:http://androidbears.stellarpc.net/?p=185
分享到:
相关推荐
主要介绍了Android基于TextView不获取焦点实现跑马灯效果,结合实例形式分析了Android基于TextView实现跑马灯的功能与布局相关技巧,需要的朋友可以参考下
textview显示跑马灯效果,使用的是继承的方法onDraw不停地绘制 优点: 1.文字长短不限哦 2.不用非得获取焦点哦
Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1、android:ellipsize=”marquee”; 2、TextView必须单行显示,且内容必须超出TextView宽度; 3、TextView要获得焦点才能滚动。 xml代码如下...
Android自带的跑马灯效果不太好控制,不能控制速度,不能即时停止和启动,而且还受焦点的影响蛋疼不已。由于项目需求需所以自己写了一个自定义的TextView,感兴趣的朋友可以了解下
1、TextView调出跑马灯效果 2、TextView获取焦点 第一种: 1、TextView调出跑马灯效果 android:ellipsize=”marquee” 2、TextView获取焦点 android:focusable=”true” android:focusableInTouchMode=”true” ...
本文实例讲述了Android基于TextView属性android:ellipsize实现跑马灯效果的方法。分享给大家供大家参考,具体如下: Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1、android:ellipsize=”marquee...
条件: 1、android:ellipsize=”marquee” 2、TextView必须单行显示,即内容必须超出TextView大小 3、TextView要获得焦点才能滚动 mTVText.setText(...TextView还可以设置跑马灯效果的滚动次数 android:marqueerep
之前有写一篇TextView跑马灯的效果,后来实际项目中有发现新的问题,比如还是无法自动跑,文本超过了显示区域就截取的问题,今天换了一种思路来实现,更简单更好用。 正文 代码实现: public class ...
真正的跑马灯效果,实现原理就是设置textView为singleLine,android :ellipsize =marquee,同时新建一个自定义TextVIew让textView获得焦点
在跟着B站Up主天哥在奔跑,学习Android的TextView控件时,想要实现一个跑马灯效果,但是按照视频中的代码发现文字是不会动的。视频中的代码如下: 然后经过弹幕的提醒,可能是跑马效果所需要的焦点被其他控件抢走...
利用TextView控件实现跑马灯效果,重点实在activity中调用TextView的textView.setMovementMethod(LinkMovementMethod.getInstance()) 方法。
”marquee” ——以跑马灯的方式显示(动画横向移动) android:freezesText设置保存文本的内容以及光标的位置。参见:这里。 android:gravity设置文本位置,如设置成“center”,文本将居中显示。 android:hintText...
6.4 TextView实现跑马灯效果 6.5 EditText输入表情图像 6.6 EditText中输入特定的字符 6.7 AutoCompleteTextView完成输入 6.8 Button按钮的焦点变化 6.9 Button图文混排的按钮 6.10 RadioButton单选按钮的使用 6.11 ...
|--TextView单行跑马灯效果 |--TextView虚拟获得焦点 |--uploadServlet |--uri之表示资源resource |--ViewPage的使用 |--view中的tag用法之存储对象 |--view常用属性 |--xml常用属性 |--xml文件的pull解析与序列化...