我想在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();
如果我运行此应用程序,我会崩溃。我做错了什么? 我不知道很多关于线程的事情...... 哦,这个Thread当然是我的MainActivity的内部类。
有人可以帮忙吗?
答案 0 :(得分:5)
您必须使用runOnUI
方法从另一个线程访问UI线程,如此处所示
runOnUiThread(new Runnable() {
public void run() {
keresetTv.setText(" ");
}
});
或使用handler.post(new Runnable...);
答案 1 :(得分:3)
替代方法:继承TextView并使其onDraw调用postInvalidateDelayed()
,在几毫秒后实现自身的无效。跟踪onDraw中的调用之间的时间,并适当地闪烁光标。
答案 2 :(得分:2)
您正在尝试从另一个线程(不是主UI
线程)修改视图。您可以使用Handler
从TextView
修改CursorThread
。