android原生TextView怎么控制是否开始跑走马灯

2024-01-06 15:48

本文主要是介绍android原生TextView怎么控制是否开始跑走马灯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在实际项目中,经常遇到文本超出控件宽度,显示不全,此时android提供了一个方法:

   void android.widget.TextView.setEllipsize(TruncateAt where)  

   此方法意思就是设置文本超出宽度的展示效果。TruncateAt定义如下:


  public static enum TruncateAt {END,MARQUEE,MIDDLE,START;private TruncateAt() {}}
   END: 表示在文本展示不全时候,在文本末尾显示省略号

   MARQUEE: 表示在文本展示不全时候,以走马灯形式滚动

   MIDDLE:表示在文本展示不全时候,在文本中间尾显示省略号

   START:表示在文本展示不全时候,在文本开始处显示省略号

  默认不设置,表示无以上效果。超出控件部分文字会被截断显示。

  所以,可以使用null关闭ellipsize。即:

  setEllipsize(null);

另外,以上属性设置是立即生效的。即如果文本是MARQUEEN,走马灯滚动状态, 
如果设置为null时候,在滚动的走马灯马上会回到初始状态。且文本被截断。
如果设置为END,在滚动的走马灯会回到末尾有省略号的样式。  
控制走马灯滚动可以如下设置:
   // 开始滚动public void startScroll() {setEllipsize(TextUtils.TruncateAt.MARQUEE);}// 停止滚动,回到起点public void stopScroll() {setEllipsize(TextUtils.TruncateAt.END);或者setEllipsize(null);}



android样进行走马灯滚动前提是该控件在焦点状态,且可以聚焦。但是很多时候文本不聚焦也需要滚动提示用户。
如果不自定义view,那么android系统的TextView怎么样才能达到效果呢?
答案就是复写TextView的isFocused方法:
   //默认滚动@Overridepublic boolean isFocused() {return true;}

另外,setSingleLine()或setHorizontallyScrolling(bool)来限制为单行文本。
如果setMaxLines(int)被用来设置两行或两行以上的文本,只有END和MARQUEE被ellipsize方法支持(其他ellipsiz类型将不会做任何事情)。

示列:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><com.starcor.hunan.MarqueeTextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:layout_height="wrap_content"android:maxLines="1"android:scrollHorizontally="true"android:layout_centerInParent="true"android:singleLine="true"android:textColor="#ff0000"android:focusable="true"android:textSize="24px"android:marqueeRepeatLimit="marquee_forever"android:focusableInTouchMode="true"/>
</FrameLayout>


public class MarqueeTextView extends TextView{public MarqueeTextView(Context context) {super(context);}public MarqueeTextView(Context context, AttributeSet attrs) {super(context, attrs);init();}public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);init();}private void init() {this.setScrollbarFadingEnabled(true);this.setHorizontallyScrolling(true);this.setHorizontalFadingEdgeEnabled(true);this.setSingleLine(true);this.setFocusable(true);this.setMarqueeRepeatLimit(-1);this.setMaxLines(1);}@Overridepublic boolean isFocused() {return true;}}


这篇关于android原生TextView怎么控制是否开始跑走马灯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/576813

相关文章

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

Python实现局域网远程控制电脑

《Python实现局域网远程控制电脑》这篇文章主要为大家详细介绍了如何利用Python编写一个工具,可以实现远程控制局域网电脑关机,重启,注销等功能,感兴趣的小伙伴可以参考一下... 目录1.简介2. 运行效果3. 1.0版本相关源码服务端server.py客户端client.py4. 2.0版本相关源码1

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,