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);
我一直在尝试使用椭圆大小在 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);