我有一个名为ishacked的字符串,如果boolean hacked返回true,则应为红色;如果返回false,则为绿色。
我想把它放在像这样的文本视图中:
dynamicTextView.setText(getString(R.string.display, ishacked));
字符串文本在strings.xml中:
<string name="display">Current application activation status:\n %1$s</string>
我已尝试使用Spannablestring
这样的实现(此代码放在之前 textview setText):
if (hacked) {
ishacked = "Not active --> invalid license!";
SpannableStringBuilder builder = new SpannableStringBuilder();
SpannableString redSpannable = new SpannableString(ishacked);
redSpannable.setSpan(new ForegroundColorSpan(Color.RED), 0, ishacked.length(), 0);
builder.append(redSpannable);
} else {
ishacked = "Active (Genuine license)";
SpannableStringBuilder builder2 = new SpannableStringBuilder();
SpannableString redSpannable = new SpannableString(ishacked);
redSpannable.setSpan(new ForegroundColorSpan(Color.GREEN), 0, ishacked.length(), 0);
builder2.append(redSpannable);
}
但实际上文字颜色并不适用。谁能告诉我为什么或我做错了什么?
ouptut文本应该是这样的
如果被黑客返回true:
Current application activation status: Not active --> invalid license!
&#34;未激活 - &gt;许可证无效!&#34;应该是红色的。
答案 0 :(得分:0)
也许我对你想要完成的事情感到有点困惑,但通常要改变你正在显示的文字的颜色只需要在文本视图上设置文本颜色属性。
dynamicTextView.setTextColor(ContextCompat.getColor(mContext, R.color.red));
R.color.red
是被黑客攻击的颜色资源。那么当你希望它变成绿色时,你就会做同样的事情。
答案 1 :(得分:0)
您应该修复设置文本的部分
dynamicTextView.setText(getResources().getString(R.string.display) + builder);
或
dynamicTextView.setText(getResources().getString(R.string.display) + builder2);
但是你设置的字符串没有应用跨度
答案 2 :(得分:0)
这就是我所做的。我希望它会有所帮助。
String firstString = "Current applications activation status:\n";
String ishacked = "Not active --> invalid license!";
String totalString = "Current applications activation status:\n Not active --> invalid license!";
Spannable sptext = new SpannableString(totalString);
sptext.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.colorAccent)),String.valueOf(firstString).length(),totalString.length(), 0);
textView.setText(sptext);
答案 3 :(得分:0)
试试这个,以下在TextView上为我工作正常
txtView.setTextColor(this.getResources()的getColor(R.color.orange));