美文网首页
Window弹框实现跑马灯效果

Window弹框实现跑马灯效果

作者: 还是做个码农 | 来源:发表于2022-10-02 22:59 被阅读0次

第一种方式:在布局文件中设置focusable和focusableInTouchMode为true后即可实现跑马灯效果。

 <TextView
        android:id="@+id/tv_marquee"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:text="测试跑马灯效果,设置focusableInTouchMode"
        />

第二种方式:
自定义MarqueeTextView,重写isFoucused()方法,强制返回true。TextView只有获得焦点才能实现跑马灯效果
自定义MarqueeTextView代码如下:

package com.example.myapplication;

import android.content.Context;
import android.util.AttributeSet;

public class MarqueeTextView extends androidx.appcompat.widget.AppCompatTextView {
    public MarqueeTextView(Context context) {
        super(context);
    }

    public MarqueeTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MarqueeTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    /**
     * 需要获得焦点才能实现跑马灯效果
     */
    @Override
    public boolean isFocused() {
        return true;
    }
}

需要设置ellipsize属性为"marquee",同时设置单行显示,marqueeRepeatLimit属性设置循环次数,"marquee_forever"为无效循环。

    <com.example.myapplication.MarqueeTextView
        android:layout_width="100dp"
        android:text="测试跑马灯效果,自定义MarqueeTextView"
        android:singleLine="true"
        android:textColor="@android:color/black"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:focusable="true"
        />

TextView需要获得焦点才能有跑马灯效果,当获取不到焦点则无跑马灯效果。

相关文章

网友评论

      本文标题:Window弹框实现跑马灯效果

      本文链接:https://www.haomeiwen.com/subject/rritartx.html