在同一个LinearLayout中更改另一个TextView时,TextView会重新启动Marquee。这是因为当TextView的内容发生变化时,Marquee动画会重新开始。为了避免这种情况,可以使用以下方法:
android:focusable="true"
和android:focusableInTouchMode="true"
属性:在XML布局文件中,为TextView添加这两个属性,可以防止TextView获得焦点,从而避免重新启动Marquee动画。
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a long text that will scroll"
android:focusable="true"
android:focusableInTouchMode="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever" />
requestFocus()
方法:在代码中,可以使用requestFocus()
方法将焦点设置为TextView,从而避免重新启动Marquee动画。
TextView textView = findViewById(R.id.textView);
textView.requestFocus();
setSelected(true)
方法:在代码中,可以使用setSelected(true)
方法将TextView设置为选中状态,从而避免重新启动Marquee动画。
TextView textView = findViewById(R.id.textView);
textView.setSelected(true);
这些方法可以避免在同一个LinearLayout中更改另一个TextView时,TextView重新启动Marquee动画。
领取专属 10元无门槛券
手把手带您无忧上云