我试图在Android中为ListView中的字符串设置文本大小和颜色。使用spannable字符串来实现此目标。这是我的代码(来自onCreate):
statusInfo = new String[jArray.length()];
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, statusInfo);
formList.setAdapter(adapter);
SpannableStringBuilder secondPart = new SpannableStringBuilder("Status: " + formStatus + " - Window: " + formWindowStart + " - " + formWindowEnd);
int cs_blue = getResources().getColor(R.color.cs_blue);
int green = getResources().getColor(R.color.green);
if(fs == -1)
{
ForegroundColorSpan fcs = new ForegroundColorSpan(cs_blue);
secondPart.setSpan(fcs, 0, secondPart.length(), 0);
}
if(fs == 1)
{
ForegroundColorSpan fcs = new ForegroundColorSpan(green);
secondPart.setSpan(fcs, 0, secondPart.length(), 0);
}
//need text size of 12...85.714% of 14
secondPart.setSpan(new RelativeSizeSpan(0.85714f), 0, secondPart.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
问题是文本仍然是黑色和正常大小。不知道为什么它不改变大小和颜色。我看了几个其他的问题,但仍然无法让它发挥作用。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
好的,我想我已经解决了你的问题。
您可以查看TextView的Sourcecode。
您需要的是:
您的文字被识别为可跨越,因此可以应用不同的样式
您的视图必须更新
两者都发生在setText
。
因此,如果您要更改样式,我认为最简单的方法是使用setText。
答案 1 :(得分:0)
在xml中只需设置
即可android:textColor="#ff0000"
android:textSize="10dp" // 10sp
只是一个例子