2012-03-07 87 views
2

闪烁光标的TextView我想创建一个TextView闪烁的光标..到目前为止,我得到这个:通过螺纹

myTv = (TextView)findViewById(R.id.myTv); 


    //blinking Cursors Thread 
    class CursorThread extends Thread 
    { 
     public void run() 
     { 
      while (true) 
      { 
       myTv.setText("|"); 

       try 
       { 
        sleep(1000); 
       } 
       catch (InterruptedException e) 
       {} 

       myTv.setText(" "); 

       try 
       { 
        sleep(1000); 
       } 
       catch (InterruptedException e) 
       {} 
      } 
     } 
    } 
    CursorThread cThread = new CursorThread(); 
    cThread.start(); 

如果我跑这个程序,我得到一个崩溃。我做错了什么? 我不知道线程的许多事情... 哦,这个线程是我的MainActivity当然内部类。

有人可以帮忙吗?

回答

5

您必须从另一个线程与runOnUI方法访问UI线程就像这里显示

runOnUiThread(new Runnable() { 
    public void run() { 
     keresetTv.setText(" "); 
    } 
}); 

,或者通过使用handler.post(new Runnable...);

2

您正在尝试修改另一个线程(并非主线程UI)的视图。您可以使用Handler来修改TextViewCursorThread

3

一种替代方案:子类的TextView和有它的onDraw呼叫postInvalidateDelayed(),影响的几毫秒后自行失效。跟踪onDraw中调用之间的时间,并适当地闪烁光标。