Android用过TextView实现跑马灯效果的示例
作者:愤斗的小薪 发布时间:2023-07-27 11:16:54
标签:textview,跑马灯
以前就遇到过这个问题,今天重新拾起来。
跑马灯效果其实就是当文字超过TextView控件宽度的时候,使用滚动的方式显示出来:
方法1:(直接xml搞定)
Android系统中TextView实现跑马灯效果,必须具备以下几个条件:
1、android:ellipsize=”marquee”;
2、TextView必须单行显示,且内容必须超出TextView宽度;
3、TextView要获得焦点才能滚动。
xml代码如下:
<TextView
android:id="@+id/alarm_location"
android:layout_width="20dp"
android:padding="@dimen/space_4"
android:layout_height="wrap_content"
app:layout_rowWeight="2"
app:layout_columnWeight="2"
android:text="0"
android:ellipsize="marquee"
android:focusableInTouchMode="true"
android:singleLine="true"
android:focusable="true"/>
其中:ellipsize属性指的是文字长度超过TextView的长度的时候的显示方式,具体参数有
**Android:ellipsize=”start”—–省略号显示在开头 “…pedia”
android:ellipsize=”end”——省略号显示在结尾 “encyc…”
android:ellipsize=”middle”—-省略号显示在中间 “en…dia”
android:ellipsize=”marquee”–以横向滚动方式显示(需获得当前焦点时)**
方法2(自定义控件)
我看了自己以前的实现方式是这样,也许在低版本的平台上第一种方式适配不好吧。如果达不到要求可以试试这种方式。
TextVeiwSlide.Java
package edu.hrbeu.ice.mobilecar.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* @author 编写人: xiaox
* @date 创建时间: 2017/1/10
* @Description 功能描述: 该类
*/
public class TextViewSlide extends TextView {
public TextViewSlide(Context context) {
super(context);
}
public TextViewSlide(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean isFocused() {
return true;
}
}
activity_main.xml
<edu.hrbeu.ice.mobilecar.widget.TextViewSlide
android:id="@+id/alarm_type"
android:layout_width="@dimen/item_width"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:padding="8dp"
android:marqueeRepeatLimit="marquee_forever"
android:ellipsize="marquee"
android:scrollHorizontally="true"
android:focusableInTouchMode="true"
android:singleLine="true"
tool:text="asda" />
可以看到第二种方式也就是在自定义控件中获取了该控件的焦点。感觉和第一种没有区别。
目前在android7.1.1和android4.4上实验两种方法都没有问题。
来源:http://blog.csdn.net/qq_34897442/article/details/77015430
0
投稿
猜你喜欢
- [LeetCode] 205. Isomorphic Strings 同构字符串Given two strings s
- 1、mybatis-plus @DS实现动态切换数据源原理首先mybatis-plus使用com.baomidou.dynamic.data
- 这篇文章主要介绍了Java如何实现自定义异常类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参
- 介绍什么是ThreadLocal?ThreadLocal叫做线程变量,用于在多线程环境下创建线程本地变量。通俗的讲,ThreadLocal可
- “Java is still not dead—and people are starting to figure that out.”本教
- 本文实例讲述了C++语言实现线性表之链表实现方法。分享给大家供大家参考。具体分析如下:插入、删除结点的代码有点多,但这样提高了代码的可读性,
- 十六进制字符串与数值类型之间转换(C# 编程指南) 以下示例演示如何执行下列任务: 获取字符串中每个字符的十六进制值。 获取与十六进制字符串
- 一、导航栏UINavigationBar1、导航栏的使用在iOS开发中,我们通常会使用导航控制器,导航控制器中封装了一个UINavigati
- 井字棋游戏要求在3乘3棋盘上,每行都相同或者每列都相同再或者对角线相同,则胜出.因此我们可以使用一个二维数组来表示棋盘,判断胜负只需要判断数
- Mybatis-Spring当我们使用mybatis和spring整合后为什么下面的代码可以运行?一个问题:我就写了个mapper接口为什么
- 前言为什么用动静态库我们在实际开发中,经常要使用别人已经实现好的功能,这是为了开发效率和鲁棒性(健壮性);因为那些功能都是顶尖的工程师已经写
- SpringBoot集成Mybatis时mybatis.mapper-locations和@MapperScan的作用1、mybatis.m
- 摘要:vs2019新鲜出炉,配置opencv又有哪些不一样呢,这个教程将会一步一步的教你如何配置opencv和跑动opencv一个简单的项目
- 机器学习 机器学习的目的是把数据转换成信息。 机器学习通过从数据里提取规则或模式来把数据转成信息。 人脸识别 人脸识别通过级联分类器对特征的
- 前言Kotlin一个强大之处就在于它的扩展函数,巧妙的运用这些扩展函数可以让你写出的代码更加优雅,阅读起来更加流畅,下面总结了在开发中经常用
- 本文向您展示了在 Flutter 中实现完美的验证码输入框几种不同方法。重点是什么?真实世界的 完美的验证码输入框或 PIN 输入 UI 通
- 本篇给大家详细讲解了MTKAndroid平台开发流程,大致分为44个步骤,我们把每个步骤的命令详细讲解了下,一起来学习下。1.拷贝代码仓库从
- 前言Flutter (Channel stable, 2.10.3, on Microsoft Windows [Version 10.0.
- Json的简介JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个
- 本文实例为大家分享了OpenCV实现人脸识别程序的具体代码,供大家参考,具体内容如下//Haar特征检测,人脸识别算法,是用xml作为训练后