TextView setText覆盖了textView上的先前格式

时间:2015-12-02 18:41:27

标签: java android

这是我的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();
}

由span完成的格式化由tv.setText(tv.getText()+“\ n”+ line)覆盖; 由于有一个单一的文本视图。 此外,因为我正在逐行读取文本文件,并附加到textView直到我收到一个令牌,他们是否有更好的方法在这种情况下应用跨度?

1 个答案:

答案 0 :(得分:0)

您无法将SpannableStringBuilder直接传递给tv.setText();您必须使用toString()从缓冲区返回字符串,如下所示:

tv.setText(ssb.toString());

在TextView上调用toString()时,您还必须使用getText()。所以你会这样称呼:

tv.getText().toString()