2015-12-02 90 views
0

這是我textView的TextView的setText覆蓋以前的格式上的TextView

InputStream is = getAssets().open(readFromFile); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
String line = reader.readLine(); 
arabicFont =Typeface.createFromAsset(getAssets(),"hactyp.ttf"); 
tv.setTypeface(arabicFont); 
SpannableStringBuilder ssb = new SpannableStringBuilder(message); 
ssb.setSpan(new UnderlineSpan(),0,message.length(),0); 
tv.setText(ssb); 
tv.setMovementMethod(new ScrollingMovementMethod()); 
while(line != null) { 
    if(message.equals(line)) { 
     while(!("end".equals(line))) { 
      line = reader.readLine(); 
      tv.setText(tv.getText() +" \n" + line); 
     } 
    } 
    line = reader.readLine(); 
} 
tv.setTextSize(24); 
is.close(); 
} 

格式由跨度做的是過得去tv.setText疊加(tv.getText()+ 「\ n」 +線); 由於有單個文本視圖。 另外,因爲我正在逐行閱讀文本文件,並追加到textView直到我收到一個令牌,他們有更好的方法來應用跨越這種情況?

+2

問題到底是什麼?你試圖達到的目標是什麼? – NoChinDeluxe

+0

SpannableStringBuilder ssb = new SpannableStringBuilder(message); ssb.setSpan(new UnderlineSpan(),0,message.length(),0); tv.setText(ssb); UnderLine沒有反映在textView中 –

+0

雖然我通過創建臨時字符串並添加所有文本,然後應用跨度來解決我的問題,但我很好奇,如果有任何方法,我可以逐行添加文本,而不是每次執行getText時間和連接它。 –

回答

0

您不能通過SpannableStringBuilder直接tv.setText();你必須使用toString()這樣的緩衝區返回字符串:

tv.setText(ssb.toString());

您也有一個TextView調用getText()時使用toString()。所以你會這樣稱呼:

tv.getText().toString()