首先,使用TextView实现走马灯形式的滚动显示,只需要对其设置两个属性:

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

但是,TextView的滚动显示,有一个前提,TextView需要必须处于focus状态。当TextView失去焦点的时候,TextView将会停止滚动。如何实现无限滚动,当然也需要从焦点入手。当然,直接requestFocus()是不行的,这里我使用了另外一个方法。观察到textView有一个名为isFocused()的方法,文档中的注释是这样的:

/*** Returns true if this view has focus** @return True if this view has focus, false otherwise.*/

也就是说当TextView拥有焦点的时候会返回true.同时可以发现,TextView中很多地方都是直接调用这个方法作为判断条件,最关键的,这个方法被声明为public! ok, 实现方法已经初现端倪了!

做法是这样:比如,现在写一个类命名为一个AlwaysMarqueeTextView, 继承自TextView, 同时override isFocused()方法,并使其返回值为true, 样例如下:

public class AlwaysMarqueeTextView extends TextView{ public AlwaysMarqueeTextView(Context context) { super(context); } public AlwaysMarqueeTextView(Context context, AttributeSet attrs) { super(context, attrs); } public AlwaysMarqueeTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean isFocused() { return true; } }

更多相关文章

  1. Android的onCreateOptionsMenu()创建菜单Menu详解
  2. (Android) Eclipse "launching delegate" 停在 27%的解决方法
  3. Android的DialogFragment的基本使用方法
  4. android
  5. Android学习笔记SQLite
  6. 取消ScrollView滚动时的阴影
  7. Android中计算text文字大小的几个方法
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. 代码中如何设置TextView为不可见
  2. Android判断当前线程是否是主线程的方法
  3. Android(安卓)OpenGL ES(八)----纹理编程
  4. android-passwordsafe - Android Passwor
  5. Android判断横屏竖屏代码
  6. Android Studio v1.0 项目无法运行
  7. Android Unable to find instrumentation
  8. Android使用Aidl实现跨进程通信
  9. android 静默安装 卸载 资料汇总
  10. 在Linux下Android编译中修改Java的环境