关闭

Android学习笔记-TextView实现跑马灯效果

标签: androidtextview
1113人阅读 评论(0) 收藏 举报
分类:

基本视图组件TextView

<TextView
    android:id="@+id/view1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="我是一个TextView基本视图组件"
    android:textSize="28sp"
    android:textColor="#000000"
/>

上述xml代码便可生成一个TextView,介绍一下这几个属性

android:id : 设置组件id
android:layout_width : 设置组件宽度
android:layout_height : 设置组件高度
android:text : 设置组件显示内容
android:textSize : 设置组件字体大小
android:textColor : 设置组件字体颜色

显示效果如下

这里写图片描述

那如果我们加上

android:signleLine="true"

设置组件为单行显示,效果如下,可以发现,没能显示的内容被以省略号显示。

这里写图片描述

那么,如果我们想要让它以跑马灯的形式滚动显示呢
加上下列属性

android:focusable="true"//允许获取焦点
android:focusableInTouchMode="true"//允许在非触摸模式下获取焦点
android:ellipsize="marquee"//当控件处在被选中状态下以跑马灯效果显示多余文字

效果如下

这里写图片描述

那么,仅仅这样就可以了吗?我们尝试再添加一个相同的组件,看看会不会如我们预期的效果。

这里写图片描述

如图所示,第二个TextView并没有我们预期的跑马灯效果。
原因在于,两个TextView想要以跑马灯效果显示的前提是必须获取焦点,而第一个TextView将焦点获取,导致第二个TextView没有焦点,所以出现我们看到的情况。

那么该如何解决呢,我们自定义一个TextView的子类

public class MyTextView extends TextView {

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

    public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

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

    @Override
    //是否已获取焦点
    public boolean isFocused() {
        return true;
    }
}

可以看到,我们将isFocused强制每次都返回true,也就是说组件永远都处于已获取焦点的状态下。

将<TextView ... />修改为<com.example.shiyi.demo1.MyTextView ... />,表示使用我们自定义的组件。

然后,再看效果

这里写图片描述

两个TextView均以跑马灯效果显示了。

0
0
查看评论

android TextView实现跑马灯效果

最近忙着项目,很久没有总结提交博客和提交github了。接下来我打算整理下项目中用到的比较有用的发表到博客上。也打算总结一些关于设计模式和源码分析的博客。今天的话就先来讲下一个非常简单但又很常用的控件,跑马灯状态的TextView。当我的要显示的文本长度太长,又不想换行时用它来显示文本一来可以完全的...
  • u014486880
  • u014486880
  • 2016-01-28 20:15
  • 3606

Android——TextView实现真正的跑马灯效果

android 应用有时候需要做一个广告栏,可以做文字闪烁,跑马灯等效果,文字闪烁可以放在线程里面执行,多少秒过后设置文字的TextColor即可,跑马灯效果很少接触,之前写了一个demo,但是实现的效果不是自己想要的,普遍的跑马灯效果直接在layout里面的TextView控件加上如下属性即可实现...
  • u013836857
  • u013836857
  • 2016-05-16 10:57
  • 12354

ListView 中的TextView实现跑马灯效果 adapter 中item 跑马灯效果

转载:http://blog.csdn.net/sky181772733/article/details/7003125#   案例:怎么样在一个ListView中含有TextView的item中实现字母滚动呢。这个在一些特定的场合经常用得到。如下图,当焦点位于某个item的时...
  • wang0721
  • wang0721
  • 2014-12-25 10:18
  • 438

Android三种方式实现TextView跑马灯效果

Android三种方式实现TextView跑马灯效果作为一枚程序猿,能把自己学到的那点可怜的技术记录下来并分享出来真的是件身心愉悦的事情。 以下记录三种方式实现TextView文字滚动的效果。 第一种:原生的android自带的跑马灯效果。直接申明TextView属性。 第二种:改造TextV...
  • luozhi3527
  • luozhi3527
  • 2015-04-18 21:14
  • 9598

TextView跑马灯无效的解决办法

若要让TextView里的文本滚动,必须满足以下几个因素: 1,TextView里文本宽度超过TextView的宽度 2,android:ellipsize="marquee" 3,只有在TextView获取到焦点时,才会滚动.所以加上android:focusable...
  • licong0716
  • licong0716
  • 2016-04-06 17:03
  • 3346

Android中TextView实现垂直滚动(轮换效果,非跑马灯)

目前有这个需求,但网上找了一会儿,没发现有我的这个需求
  • parcool
  • parcool
  • 2014-11-13 13:19
  • 3597

TextView文字跑马灯效果

项目中要用到跑马灯效果,如下: 虽说看起来挺简单,但还是踩了好几个坑,故此记录一下。刚开始的时候以为设置以下两个参数就好:android:lines="1" android:ellipsize="marquee"“ellipsize”参数代表text v...
  • hdhdgdhdh
  • hdhdgdhdh
  • 2017-06-25 13:24
  • 205

TextView的跑马灯效果以及TextView的一些属性

TextView应该是用的最广的控件了,要是这句话不对我直播吃翔,这几天的项目用到跑马灯,居然忘记怎么设置了,还要Google才能解决,看来虽然很基本的东西,但是用的少还是容易遗忘,所以我决定把它写下来加深点印象,方便以后查找 具体效果 : 布局文件 <RelativeLayout x...
  • dl10210950
  • dl10210950
  • 2016-09-02 19:03
  • 12462

Android:TextView不获取焦点可以实现跑马灯的效果

之前在网上找了很多关于TextView的跑马灯效果实现的例子,实现起来都存在一些问题,例如一种是完全重画一个跑马灯,还有就是只设置TextView的相关属性使其具有跑马灯的效果,总的来说这两种方法都是可行的,但是都有其不足之处,第一种太复杂,实现起来比较麻烦,第二种呢,它只能在TextView获得焦...
  • HMYANG314
  • HMYANG314
  • 2015-06-01 14:01
  • 925

MarqueeTextView实现跑马灯效果

一 布局文件如下图所示: 代码如下:     xmlns:tools="http://schemas.android.com/tools"     android:id="@+id/activity_main...
  • izhangye
  • izhangye
  • 2017-05-09 19:32
  • 875
    ~~~
    欢迎访问我的新博客地址:shiyi.fightcoder.com
    有问题,可以发邮件到 shiyi19960604@qq.com ,不要私信了,以后大概不太登csdn了。
    个人资料
    • 访问:258065次
    • 积分:4325
    • 等级:
    • 排名:第8298名
    • 原创:166篇
    • 转载:8篇
    • 译文:0篇
    • 评论:86条
    博客专栏
    最新评论