2016-07-04 47 views
2

如何在启动前延迟运行TextView中的文本选取框?
这时我用下面的代码开始:在一段时间后运行TextView选取框

mTVTitle.postDelayed(new Runnable() { 
    @Override 
     public void run() { 
      mTVTitle.setFocusableInTouchMode(true); 
      mTVTitle.invalidate(); 
     } 
    }, 1000); 

TextView XML:

<TextView 
    android:id="@+id/tvTitle" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ellipsize="marquee" 
    android:focusable="true" 
    android:marqueeRepeatLimit="2" 
    android:scrollHorizontally="true" 
    android:singleLine="true" 
    android:textAppearance="?attr/titleTextAppearance" 
    android:textColor="@color/white"/> 

但它不工作,但如果我在XML中设置此属性,那么所有的权利。如何解决它我可以以编程方式启动一个选取框?

回答

1

至于以激活TextView的滚动字幕中提到here你必须补充一点:

mTVTitle.setSelected(true); 

当你要开始与你必须把这个你运行(内部延迟字幕)这样

mTVTitle.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       mTVTitle.setSelected(true);   
      } 
     }, 1000); 
+0

谢谢!虽然,我不明白为什么在代码中我们使用另一个属性?我测试过...没有必要调用'invalidate()' –

+1

是的,它不需要调用invalidate()。但是,如果您想将普通文本视图转换为以编程方式启用字幕的文本视图,则可能必须调用invalidate()。编辑我的答案,因为我们没有做任何这样的改变。 –

+0

我明白了。谢谢! –