2015-04-30 35 views
0

我有一個多行textview需要顯示服務器的狀態。所以當服務器狀態改變時,它應該總是添加一個新行。但是,當我使用mTextview.Text=string.Format("connected\n");mTextview.SetText("...")新行不會立即顯示,但會顯示所有進程何時完成。任何人都可以幫我把它改成自動顯示TextView嗎? THX如何動態地將新行添加到多行文本視圖

logTextView.Text = string.Format ("Client log:\n"); 
....... 
logTextView.Text=string.Format("Socket connected to 172.27.27.1\n"); 
....... 
logTextView.Text = logTextView.Text+string.Format ("Start send image to server\n"); 
....... 
+1

你提到「當所有的處理完成」,那麼它出現時,是過程,然後logTextView同步過程? –

+0

如果你想將文本添加到TextView,那麼最好使用'textView.append(「\ nmy new text」);'。但是,當你想用套接字來使用它,並且你的套接字語句將在一個線程或AsyncTask中時,你不能在那裏使用這些'改變gui語句'。你的應用會崩潰。 – greenapps

+0

@JamieRees我的意思是套接字關閉後。一切都完成了,然後文本顯示出來。這絕對不是我想要的。我使用'textview.append(「abc」)'但仍然一樣... –

回答

1

你應該使用:

YourTextView.setText("Connected\n"); 

,並添加多行使用:

YourTextView.append("another line\n"); 
+0

我使用這個,但文本仍然不是逐行顯示... –

+0

你是否意外地爲你的多行文本視圖設置最大值? – Strider

+0

不,我設置了'android:singleLine =「false」' –

0

創建與日誌進程的新的線程,並立即某些事件發生後調用它。

例如:

class LogProcess implements Runnable { 

    private String message; 

    private TextView textView; 

    public LogProcess(TextView textView, String message) { 
     this.textView = textView; 
     this.message = message; 
    } 

    @Override 
    public void run() { 
     textView.append(message); 
    } 

} 

,然後調用它:

Thread logProcess = new Thread(new LogProcess(logTextView, message)); 
logProcess .start(); 
相關問題