这是我的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直到我收到一个令牌,他们是否有更好的方法在这种情况下应用跨度?
答案 0 :(得分:0)
您无法将SpannableStringBuilder
直接传递给tv.setText();
您必须使用toString()
从缓冲区返回字符串,如下所示:
tv.setText(ssb.toString());
在TextView上调用toString()
时,您还必须使用getText()
。所以你会这样称呼:
tv.getText().toString()