2011-09-03 52 views
8

这是其他地方所要求的,但该解决方案对我无效。所以再次提出更多的上下文。问题在于一个活动包含滚动音乐标题文本视图,该视图被更新过的时间计数器文本视图中断。TextView的设置停止其他TextView的滚动字幕

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

<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" 
/> 

音乐标题动态设置为(在测试用例中)一长串文本。如果我从不用下面一行更新当前时间的文本,无论我如何与我的暂停和播放按钮进行交互,音乐标​​题都将永远愉快地滚动。

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

但如果我这样做设置了当前时间的文本时,乐曲将停止。按下我的暂停按钮不知何故会重新开始滚动,但按下游戏会导致当前时间更新并再次停止。

每在这个线程的建议,我试图夫妇与滚动标题的重新启用的时间文本的设置如下:

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

这对其他比重置失败没有影响每次重新启动时滚动器。

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

回答

7

选框有问题。当TextView(或包含TextView的窗口)失去焦点时,选取框停止并重置(请参阅TextView的源代码)。 我猜你这里有3级可能的解决方案:

  1. 您可以设置在布局的所有其他浏览android:focusable="false"。这样你的TextView就不会失去焦点。但这可能不是你想要的解决方案。
  2. 您可以继承TextView并更改onFocusChanged()onWindowFocusChanged()以防止选取框停止并重置。
  3. 创建您自己的选取框实现。
+7

原来上面的TextView XML配置在没有任何运行时变化的情况下工作正常(重置enabled = true或其他)如果我摆脱了我的布局文件中的RelativeLayout,并将它们替换为LinearLayout。如果我不这样做,上面的建议1和2都不能确定。这是RelativeLayout的一个微妙而虚假的未记录失败。除了重新排列布局文件以不使用相对布局以外,是否有任何已知的解决方法?甚至不能确定,因为我记得只需要使用相对布局来克服线性布局的布局问题。 – Groovee60

+6

谢谢你的评论。 'RelativeLayout'正在造成这种情况。当使用'LinearLayout'时,选框工作正常,更新其他视图不会破坏它。这个信息值得自己回答... – Knickedi

5

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

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

+0

这个作品像魅力。谢谢你们! –

+0

迄今为止最好的答案! –

2

(将以上评论推广到答案)原来,上面的TextView XML配置工作正常,没有任何运行时更改(重置enabled = true或其他)如果我摆脱了我的布局文件中的RelativeLayout,并将其替换为LinearLayout中的。如果我不这样做,上面的建议1和2都不能确定。这看起来像是RelativeLayout的一个微妙和虚假的未公开的失败。