Android中的动态文本视图?
我是Android新手。我需要在屏幕上查看一个文本。在线程睡眠时间之后,我需要在屏幕上添加另一个文本。我必须显示文本添加,但我的代码在所有追加操作后显示。如何显示逐个添加文本Android中的动态文本视图?,android,Android,我是Android新手。我需要在屏幕上查看一个文本。在线程睡眠时间之后,我需要在屏幕上添加另一个文本。我必须显示文本添加,但我的代码在所有追加操作后显示。如何显示逐个添加文本 public class dynamictextview extends Activity { /** Called when the activity is first created. */ private TextView tv ; @Override public void onCr
public class dynamictextview extends Activity {
/** Called when the activity is first created. */
private TextView tv ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = new TextView(this);
tv.setText("Dynamic Text View Test\n");
setContentView(tv);
for(int i=0;i<10;i++)
{
tv.setDrawingCacheBackgroundColor(MODE_APPEND);
tv.append("\nAttempt "+i);
try {
Thread.sleep(500);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
公共类dynamictextview扩展活动{
/**在首次创建活动时调用*/
私家图文电视;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=新文本视图(此);
tv.setText(“动态文本视图测试”);
设置内容视图(电视);
对于(inti=0;i首先,您不能从UI线程调用Thread.sleep()
然后,要使文本附加按预期运行,您必须首先从onCreate()方法返回,然后再修改TextView的内容。问题在于您的线程。sleep(500);
实际上正在使UI线程休眠。
您应该做的是将for循环的代码放入另一个工作线程中,并使其在UI线程(runOnUIThread)上运行。
我自己还没有测试过,但理论上这种方法应该是可行的。你可以使用handler的方法
private TextView mTextView;
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.textview);
for(int i=0;i<10;i++)
{
handler.postDelayed(new ViewUpdater("\nAttempt "+i), 1000*i);
}
}
private class ViewUpdater implements Runnable{
private String mString;
public ViewUpdater(String string){
mString = string;
}
@Override
public void run() {
mTextView.append(mString);
}
}
private TextView mTextView;
私有处理程序=新处理程序();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView=(TextView)findViewById(R.id.TextView);
对于(int i=0;i