Android | 启用 TextView 跑马灯效果的方法

如果要给一个 TextView 设置跑马灯效果,我们仅需要给其设置如下属性即可:

xml 复制代码
<TextView
    android:ellipsize="marquee"
    android:singleLine="true" />

ellipsize 属性设置为 marquee 表示开启跑马灯效果,而 singleLine 则设置其为单行展示。同时需要在 TextView 获焦或被选中时才会有跑马灯效果,因此我们在代码中可以手动让其获焦或者设置其为 selected 的状态 textview.isSelected = true。

通过对比发现,设置 android:lines="1" 和 android:maxLines="1" 是没有效果的,一定是要 android:singleLine="true" 才可以,以下是实例代码:

xml 复制代码
<!-- 布局 -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <TextView
        android:id="@+id/tv1"
        style="@style/TextView_Style"
        android:text="(未设置 Selected) 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯" />

    <TextView
        android:id="@+id/tv2"
        style="@style/TextView_Style"
        android:text="(仅设置 Selected) 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯" />

    <TextView
        android:id="@+id/tv3"
        style="@style/TextView_Style"
        android:lines="1"
        android:text="(设置 Selected 设置lines = 1) 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯" />

    <TextView
        android:id="@+id/tv4"
        style="@style/TextView_Style"
        android:maxLines="1"
        android:text="(设置 Selected 设置maxLines = 1) 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯" />

    <TextView
        android:id="@+id/tv5"
        style="@style/TextView_Style"
        android:singleLine="true"
        android:text="(设置 Selected 设置singleLine = true) 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯 跑马灯" />

</LinearLayout>

<!-- style -->
<style name="TextView_Style">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:ellipsize">marquee</item>
    <item name="android:textSize">36sp</item>
    <item name="android:layout_marginVertical">8dp</item>
    <item name="android:textColor">@color/black</item>
</style>

各种情况的结果如下:

相关推荐
一隅论数智4 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
上海广测检测科技有限公司4 天前
智能平板出口巴西合规详解:Anatel射频、Inmetro电源/电池与LGPD数据合规叠加
经验分享
千里马学框架4 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台4 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone4 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc4 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
FLJwu4 天前
存储与固件量产实战01:运动相机TF卡量产翻车实录!V30≠4K可用,90%OEM踩中的隐形售后坑
经验分享·数码相机·相机
xiaomu001234 天前
床垫选型的技术评估模型:结构、材料、卫生与检测四层口径
经验分享
汉风设计装饰4 天前
智慧办公弱电系统设计:门禁、监控与 IoT 传感器的集成方案
经验分享
ttyyttemo4 天前
Kotlin 协程中的 Job 结构化并发与取消
android