TextView的设置停止其他TextView的滚动字幕

这被问到别处,但解决scheme并不适合我。 所以再次提出更多的上下文。 问题是一个活动包含一个滚动的音乐标题文本视图,该视图被更新的经过时间计数器文本视图中断。

我的活动布局中有两个TextView小部件(尽pipe它们被其他布局容器所包围)。

<TextView android:id="@+id/v_current_time" android:minWidth="26dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="right|center_vertical" android:singleLine="true" android:textSize="12sp" android:enabled="false" /> <TextView android:id="@+id/v_track_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" android:textStyle="normal" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:enabled="true" /> 

音乐标题被dynamic设置为(在testing案例中)一长串文本。 如果我从来没有用当前时间更新文本,那么无论我如何与我的暂停和播放button进行交互,音乐标​​题都将永远愉快地滚动。

 tvCurrentTime.setText(DataFormat.formatTime(progress)); 

但是,如果我确实设置了当前的文本,则音乐标题将停止。 按下我的暂停button不知何故将滚动重新开始,但按播放将导致当前时间更新并再次停止。

根据这个线程的build议,我试图把时间文本的设置与重新启用滚动标题的情况如下相耦合:

 tvCurrentTime.setText(DataFormat.formatTime(progress)); tvTitle.setEnabled(true); 

除了重新启动每次重置滚动条之外,这对故障没有影响。

是否有一些我想念的细节,或者有什么其他想法可能会出错? 非常感谢!

Solutions Collecting From Web of "TextView的设置停止其他TextView的滚动字幕"

选框是有问题的。 当TextView(或包含TextView的窗口)失去焦点时,选取框将停止并重置(请参阅TextView的源代码)。 我猜你有三种可能的解决scheme:

  1. 您可以在布局中的所有其他视图中设置android:focusable="false" 。 这样你的TextView不应该失去焦点。 但这可能不是你想要的解决scheme。
  2. 您可以onFocusChanged() TextView并更改onFocusChanged()onWindowFocusChanged()以防止选取框停止并重置。
  3. 创build您自己的选取框的实现。

还有另一种方法可以解决这个问题,而不需要删除所有的RelativeLayout。

您可以简单地将带有LinearLayout的选取框TextView作为容器包装在RelativeLayout中。

(上面的评论提出了一个答案)原来的TextView XMLconfiguration上面工作正常,没有任何运行时的变化(重置启用=真或其他)如果我摆脱了我的布局文件中的RelativeLayout,并用LinearLayout的replace它们。 如果我不这样做,上面的build议1和2都不能确定。 这似乎是一个微妙的和假的没有logging的RelativeLayout失败。