2015-12-02 70 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()