Rom*_*dgz 5 android colors textview
我有一个TextView用作蓝牙连接控制台.当我发送命令时,我希望它以彩色(例如青色)书写,并且答案以不同的颜色(例如红色)收到.
有可能这样做,如果是这样,怎么样?
我读过可能会使用HTML,但我不确定这是最好的方法,甚至不知道怎么做.
ben*_*ous 16
这是一个基于C0deAttack的答案的小辅助函数,它简化了事情
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);
}
Run Code Online (Sandbox Code Playgroud)
只需更换任何电话
textView.append("Text")
Run Code Online (Sandbox Code Playgroud)
同
appendColoredText(textView, "Text", Color.RED);
Run Code Online (Sandbox Code Playgroud)
你真的需要它作为TextView,还是你可以使用ListView,并在列表中为每个命令/答案添加一个新行?
如果你真的想使用TextView,你可以做这样的事情(这是一个工作的例子,你可以复制并粘贴到你的应用程序试试):
package com.c0deattack;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Spannable;
import android.text.style.ForegroundColorSpan;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MultipleColoursInOneTextViewActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
String command = "This is a command";
String response = "\nThis is a response";
tv.append(command + response);
Spannable spannableText = (Spannable) tv.getText();
spannableText.setSpan(new ForegroundColorSpan(Color.GREEN), 0, command.length(), 0);
spannableText.setSpan(new ForegroundColorSpan(Color.RED), command.length(), command.length() + response.length(), 0);
LinearLayout layout = new LinearLayout(this);
layout.addView(tv);
setContentView(layout);
}
}
Run Code Online (Sandbox Code Playgroud)
所以这表明它可以完成,但你明显会注意到你必须自己设置换行符并在每个命令/答案开始和结束时进行锻炼,以便你可以为它应用正确的颜色.这并不难,但对我来说,感觉笨重.
| 归档时间: |
|
| 查看次数: |
5887 次 |
| 最近记录: |