2012-03-07 117 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中調用之間的時間,並適當地閃爍光標。