Android 如何使字幕文本在离开屏幕视图后立即再次弹出

How to make marquee text pop up again immediately after it leaves the screen view in Android

我一直在尝试使用椭圆大小在 Android 中将选取框文本从右移到左。

它确实会移动,但问题是只有当文本大小小于屏幕视图时它才会移动。

出于这个原因,我什至在文本的左右两侧添加了额外的空格,以使文本大小大于屏幕大小。现在,在文本滚出屏幕后,在它再次从屏幕右端出现之前会有一小段延迟。

我希望它在文本离开屏幕后立即出现。

以下是我为选取框创建的自定义代码。

public class Ticker extends AppCompatTextView {

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

    private void initialize() {
        setSelected(true);
        setMarqueeRepeatLimit(-1);
        setEllipsize(TextUtils.TruncateAt.MARQUEE);
        setFreezesText(true);
        setSingleLine(true);
        setHorizontallyScrolling(true);
    }
}

文本是“\t \t \t \t \t \t \t \t sometext \t \t \t \t \t \t \t \t”

在您的布局文件中创建一个文本视图。

<TextView
                android:id="@+id/txtMarquee"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:background="@color/white"
                android:gravity="center"
                android:layout_margin="0.50dp"
                android:padding="5dp"
                android:singleLine="true"
                android:textColor="@color/bg_login"
                android:textSize="20sp" />

在您的 MainActivity 的 OnCreate 方法中编写以下代码。

TextView txtMarquee = (TextView) findViewById(R.id.txtMarquee);
Animation marquee = AnimationUtils.loadAnimation(this, R.anim.marquee);
txtMarquee.setShadowLayer(0,0,0,0);
txtMarquee.startAnimation(marquee);
txtMarquee.setText("message");

通过以下不同的方式实现此目的:

将此添加到您的布局中activity.xml

 <TextView
            android:id="@+id/marque_scrolling_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="#ffffff"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            android:padding="1dp"
            android:scrollHorizontally="true"
            android:singleLine="true"
            android:textSize="18sp"
            android:textStyle="bold"
            android:focusable="true"
            android:focusableInTouchMode="true"/>

并在 MainActivity class 的 onCreate 方法中添加以下代码:

        TextView marque = (TextView)findViewById(R.id.marque_scrolling_text);
        marque.setText("This is Scrolling Text in Android Using TextView.");
        marque.setText(scrolltext);
        marque.setSelected(true);
        marque.setSingleLine(true);