我在尝试根据第一个字符在每一行上设置不同的颜色时遇到问题。这就是我现在拥有的。在textview中没有任何东西填充。
TextView output=(TextView) findViewById(R.id.textView1);
File file = new File("/sdcard/file.txt");
StringBuilder text = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
if (line.substring(0,1).equals("r")) {
appendColoredText(output, line, Color.RED);
} else if (line.substring(0,1).equals("y")) {
appendColoredText(output, line, Color.YELLOW);
} else if (line.substring(0,1).equals("c")) {
appendColoredText(output, line, Color.CYAN);
} else {
appendColoredText(output, line, Color.BLACK);
}
//text.append('\n');
}
output.setText(text);
}
catch (IOException e) {
Toast.makeText(getApplicationContext(),"Error reading file!",Toast.LENGTH_LONG).show();
e.printStackTrace();
}
public static void appendColoredText(TextView tv, String text, int color) {
int start = tv.getText().length();
tv.append(text);
int end = tv.getText().length();
Spannable spannableText = (Spannable) tv.getText();
spannableText.setSpan(new ForegroundColorSpan(color), start, end, 0);
}
答案 0 :(得分:2)
public void displayOutput()
{
TextView output=(TextView) findViewById(R.id.textView1);
output.setMaxLines(20000);
//File sdcard = Environment.getExternalStorageDirectory();
File file = new File("/sdcard/file.txt");
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
if (line.substring(0,1).equals("R")) {
appendColoredText(output, line, Color.RED);
} else if (line.substring(0,1).equals("Y")) {
appendColoredText(output, line, Color.YELLOW);
} else if (line.substring(0,1).equals("C")) {
appendColoredText(output, line, Color.CYAN);
} else {
appendColoredText(output, line, Color.WHITE);
}
}
}
catch (IOException e) {
Toast.makeText(getApplicationContext(),"Error reading file!",Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
public static void appendColoredText(TextView tv, String text, int color) {
int start = tv.getText().length();
tv.append(text);
int end = tv.getText().length();
Spannable spannableText = (Spannable) tv.getText();
spannableText.setSpan(new ForegroundColorSpan(color), start, end, 0);
tv.append("\n");
}
这是最终为我工作的代码
我的目标是逐行读取文本文件,并根据行的第一个字符在textview中为该行指定颜色。我对原始代码的问题在于,任何颜色的文本视图中都没有出现任何颜色。