android TextView实现跑马灯效果

作者:段合江 时间:2023-07-27 16:35:31 

本文实例为大家分享了android TextView跑马灯效果的具体代码,供大家参考,具体内容如下

一、要点

设置四个属性

android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"

直接在xml中使用


<TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:singleLine="true"
 android:ellipsize="marquee"
 android:focusable="true"
 android:focusableInTouchMode="true"
 android:text="人生是一场无休、无歇、无情的战斗,凡是要做个够得上称为人的人,都得时时向无形的敌人作战。" />

注意:singleLine属性 不能换成 maxlLines 

二、复杂布局

在复杂的布局中可能不会实现跑马灯效果。例如如下布局中,就只有第一个TextView会有跑马灯效果


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/tv1"
 android:singleLine="true"
 android:ellipsize="marquee"
 android:focusable="true"
 android:focusableInTouchMode="true"
 android:text="人生是一场无休、无歇、无情的战斗,凡是要做个够得上称为人的人,都得时时向无形的敌人作战。" />
<TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_below="@+id/tv1"
 android:layout_marginTop="10dp"
 android:singleLine="true"
 android:ellipsize="marquee"
 android:focusable="true"
 android:focusableInTouchMode="true"
 android:text="人生是一场无休、无歇、无情的战斗,凡是要做个够得上称为人的人,都得时时向无形的敌人作战。" />

</RelativeLayout>

这时候就需要自定义View,实现跑马灯效果

自定义MarQueeTextView extents TextView  重写isFocused()方法,返回true


public class MarqueeText extends TextView {
public MarqueeText(Context context) {
 super(context);
}

public MarqueeText(Context context, @Nullable AttributeSet attrs) {
 super(context, attrs);
}

public MarqueeText(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
 super(context, attrs, defStyleAttr);
}

@Override
public boolean isFocused() {
 return true;
}
}

布局中使用


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.example.dhj.marqueedemo.View.MarqueeText
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/tv1"
 android:singleLine="true"
 android:ellipsize="marquee"
 android:focusable="true"
 android:focusableInTouchMode="true"
 android:text="人生是一场无休、无歇、无情的战斗,凡是要做个够得上称为人的人,都得时时向无形的敌人作战。" />
<com.example.dhj.marqueedemo.View.MarqueeText
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_below="@+id/tv1"
 android:layout_marginTop="10dp"
 android:singleLine="true"
 android:ellipsize="marquee"
 android:focusable="true"
 android:focusableInTouchMode="true"
 android:text="人生是一场无休、无歇、无情的战斗,凡是要做个够得上称为人的人,都得时时向无形的敌人作战。" />

</RelativeLayout>
标签:android,TextView,跑马灯
0
投稿

猜你喜欢

  • Java中的Gradle与Groovy的区别及存在的关系

    2023-05-13 17:28:46
  • Android编程实现圆角边框布局效果的方法

    2021-06-07 08:54:01
  • JAVA JDK8 List分组获取第一个元素的方法

    2021-06-24 13:07:51
  • @TransactionalEventListener的使用和实现原理分析

    2022-01-19 06:15:11
  • QT自定义QTextEdit实现大数据的实时刷新显示功能实例

    2023-05-06 03:18:28
  • Java中间消息件ActiveMQ使用实例

    2021-10-10 14:24:21
  • 详解SpringMVC重定向传参数的实现

    2022-09-20 19:01:02
  • java解析XML详解

    2023-02-26 09:19:51
  • 利用C#操作WMI指南

    2022-05-07 18:02:42
  • 深入学习C#多线程

    2021-06-12 12:35:04
  • idea mybatis配置log4j打印sql语句的示例

    2023-11-25 10:32:39
  • 解决Springboot @Autowired 无法注入问题

    2022-04-14 21:19:01
  • java 生成有序账号的实现方法

    2023-08-12 03:28:01
  • 关于AndroidStudio新建与编译项目速度慢解决办法

    2023-05-22 05:05:10
  • spring boot整合RabbitMQ实例详解(Fanout模式)

    2022-08-18 18:52:30
  • Android自定义View实现选座功能

    2022-12-23 00:05:45
  • Android Fragment+FragmentTabHost组件实现常见主页面(仿微信新浪)

    2023-10-20 10:00:50
  • C# 使用com获取Windows摄像头列表

    2022-11-03 09:50:49
  • C# 创建单例的多种方式

    2023-03-17 05:23:48
  • Kotlin利用Regex如何构建正则表达式详解

    2022-12-25 18:31:10
  • asp之家 软件编程 m.aspxhome.com