大家好,在我们通常的android project中,通常需要用到textview这一个布局文件,并且对于这一个显示布局所需要的文本文字内容。

下面我们就来介绍一种方法来实现在android中用跑马灯的效果来将一行内放不下的text文本表示出来。

首先,我们需要在布局文件中新建一个textview,对他如不进行任何操作将有如下显示:

在demo中的显示为:

感觉有点low,对此textview布局中加入如下布置,就可以实现跑马灯的效果:

其中的:singleLine为设置这个textview将在一行中显示,而不会进行折叠行的效果。

focusable为设置第一个焦点,

focusableInTouchMode为配套focus使用的一个布局,

ellipsize为一个横向滚动的一个效果。

OK,在这里的话运行我们的demo就已经有了跑马灯的效果了。

但是,,,

如果要在一个界面中运行多个跑马灯时,这样显然就不可以了,比如我们开一个Linearlayout的两个textview,那么就只有上面的一个textview有跑马灯的效果,这是因为,我们在第一个textview中就已经默认占用了focusable这个聚焦的参数,那么我们就需要在java代码中来实现这个问题,。

首先,创建一个类MarqureeTextView,它继承的是TextView这个类,利用android studio的强大补全功能,队这歌继承的类创建所包含的三个函数方法,如下所示:

package com.example.liuenshuo.study1;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView; /**
* Created by liuenshuo on 2016/11/20.
*/
public class MarqureeTextView extends TextView {
public MarqureeTextView(Context context) {
super(context);
} public MarqureeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
} public MarqureeTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
} public MarqureeTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public boolean isFocused(){
return true; }
}

其中,最后的isFoused方法为返回所有值都为true。

其次我们要在MainActivity那将要实现跑马灯效果的TextView控件的头部换成这个新建类的“包名.类名”,(因为这个布局文件以及被猪Java文件所引用)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.liuenshuo.study1.MainActivity"> <com.example.liuenshuo.study1.MarqureeTextView 就是这里。。。
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:ellipsize="marquee"
android:id="@+id/text1"
android:textSize="15sp"
android:textColor="#981111"
android:text="@string/hello_world" />
<com.example.liuenshuo.study1.MarqureeTextView //就是这里。。。
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_below="@+id/text1"
android:focusable="true"
android:focusableInTouchMode="true"
android:ellipsize="marquee"
android:singleLine="true"
android:textSize="15sp"
android:text="@string/hello_world2" />
</RelativeLayout

最后运行我们的demo,就可以实现如下跑马灯的效果:

好的,这个简单效果就学到这里,谢谢大家。

在android中用跑马灯的效果显示textview的更多相关文章

  1. Android 纵向跑马灯滚动效果

    像淘宝和京东都会有跑马灯的效果,今天给大家贡献下以前项目的一个demo,各位看官,且看效果图. 我们先定义一个Bean文件,这个实体类文件主要包含标题,内容描述,以及还有跳转的链接. LampBean ...

  2. Android:TextView文字跑马灯的效果实现

    解决TextView文字显示不全的问题. 简单设置跑马灯的效果: <TextView android:id="@+id/textView" android:layout_wi ...

  3. Android 文字自动滚动(跑马灯)效果的两种实现方法[特别好使]

    有时候在xml中写的跑马灯效果不滚动:原因有以下 Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1.android:ellipsize=”marquee” 2.TextV ...

  4. Android 高级UI设计笔记05:使用TextView实现跑马灯的效果

    1. 使用TextView属性实现跑马灯的效果: (1). 新建一个Android工程,命名为"MarqueeTextViewDemo",如下: (2). 来到activity_m ...

  5. android使用TextView实现跑马灯的效果(1)

    android使用TextView实现跑马灯的效果 1.activity_main.xml <?xml version="1.0" encoding="utf-8& ...

  6. android实现跑马灯效果

    第一步:新建一个新项目,MarqueeTextView 首先为了观察到跑马灯效果,将要显示的文字极可能 写长.在strings.xml目录里面将 <string name="hello ...

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

    之前在网上找了很多关于TextView的跑马灯效果实现的例子,实现起来都存在一些问题,例如一种是完全重画一个跑马灯,还有就是只设置TextView的相关属性使其具有跑马灯的效果,总的来说这两种方法都是 ...

  8. android实现跑马灯效果(能够实现两个以上跑马灯)

    本文用了继承自TextView的MarqueeTextView来实现跑马灯效果.原因是,跑马灯效果是须要TextView拥有焦点才会跑动的.而有时候TextView获得焦点会有点耗时,造成要等待一段时 ...

  9. 浅谈TextView Ellipsize效果与Marquee跑马灯无效果问题

    说到TextView 效果,相信大家一定熟悉跑马灯. 先来看看 Ellipsize是什么,Ellipsize 从开发技术上翻译为省略效果.故名思议,就是当文本无法显示全部时,用什么效果来显示未显示的部 ...

随机推荐

  1. 数据分析和R语言的那点事儿_1

    最近遇到一些程序员同学向我了解R语言,有些更是想转行做数据分析,故开始学习R或者Python之类的语言.在有其他编程语言的背景下,学习R的语法的确是一件十分简单的事.霸特,如果以为仅仅是这样的话那就图 ...

  2. EJB概念理解

    转自http://blog.csdn.net/jojo52013145/article/details/5783677 1. 我们不禁要问,什么是"服务集群"?什么是"企 ...

  3. Windows 安装 openssl

    http://slproweb.com/products/Win32OpenSSL.html File Type Description Win32 OpenSSL v1.1.0b Light 3MB ...

  4. Android中NDK的搭建及简单使用 Android.mk相关介绍 JNI的使用

    Android中NDK的搭建及简单使用: 使用NDK,简述其重要步骤:.搭建NDK环境(作用:用于自动生成jni下的.c对应的so文件)---到Android NDK官网或Android官网下载ndk ...

  5. selenium 富文本框处理

    selenium 富文本框处理, 网上有用API的解决方法1:参见:http://blog.csdn.net/xc5683/article/details/8963621 群里1位群友的解决方法2:参 ...

  6. oracle数据库导入导出

    简单记录下数据泵导出导入expdp .impdp 和 普通导出导入 exp.imp 一.数据泵导出数据库(按用户)步骤: 1.以oracle用户登录oracle所在服务器,创建数据库备份文件目录 &g ...

  7. win2003、win7下操作注册表

    在win2007里,web程序仅对LOCAL_CURRENT_USER能进行读(写:没有进行测试)操作. 在本地的IIS里运行的web程序,如需访问注册表,需要将对应的应用程序池中的标识里面的用户,改 ...

  8. myrocks记录格式分析

    概况 rocksdb作为KV存储引擎,那么myrocks记录最终会以kv的形式存储在rocksdb中.MySQL中的表一般由若干索引组成, 在innodb存储引擎中,每个索引对应一颗B树,而在rock ...

  9. mongoDB研究笔记:分片集群的工作机制

    上面的(http://www.cnblogs.com/guoyuanwei/p/3565088.html)介绍了部署了一个默认的分片集群,对mongoDB的分片集群有了大概的认识,到目前为止我们还没有 ...

  10. Redis 队列操作

    class Program { //版本2:使用Redis的客户端管理器(对象池) public static IRedisClientsManager redisClientManager = ne ...