在android listview中设置文本颜色和大小

时间:2015-11-27 16:43:18

标签: android string listview spannablestring

我试图在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);

问题是文本仍然是黑色和正常大小。不知道为什么它不改变大小和颜色。我看了几个其他的问题,但仍然无法让它发挥作用。

任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:0)

好的,我想我已经解决了你的问题。

您可以查看TextView的Sourcecode

您需要的是:

  1. 您的文字被识别为可跨越,因此可以应用不同的样式

  2. 您的视图必须更新

  3. 两者都发生在setText。 因此,如果您要更改样式,我认为最简单的方法是使用setText。

答案 1 :(得分:0)

在xml中只需设置

即可
android:textColor="#ff0000"
android:textSize="10dp" // 10sp

只是一个例子