1

有没有人指导我为什么在 color.xmlStringSpanable使用用户定义的颜色没有导致下面的预期结果是示例代码

    sorry_Span=new SpannableString("Sorry, you dont have any registered device, what you want to do ?");
    sorry_Span.setSpan(new ForegroundColorSpan(Color.BLUE), 36, 42, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    //sorry_Span.setSpan(new ForegroundColorSpan(R.color.blue_txt), 36, 42, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    sorry_Msg.setText(sorry_Span);

使用Color.Blueit 运行时结果很好,但使用R.color.blue_txtit 运行时,文本会显示为空 提前感谢您的帮助

4

3 回答 3

12

所以我自己找到了答案,希望这可以帮助那些可能想要使用自定义颜色的人

    sorry_Span=new SpannableString("Sorry, you dont have any registered device, what you want to do ?");
    sorry_Span.setSpan(new ForegroundColorSpan(Color.BLUE), 36, 42, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    //sorry_Span.setSpan(new ForegroundColorSpan(R.color.blue_txt), 36, 42, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    sorry_Msg.setText(sorry_Span);

可以使用以下方法处理自定义颜色

Color.rgb(int red,int green,int blue)

所以使用这个我制作了我自己的自定义 colr 如下

    sorry_Span=new SpannableString("Sorry, you dont have any registered device, what you want to do ?");

   // sorry_Span.setSpan(new ForegroundColorSpan(Color.rgb(34,141,65), 36, 42, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
sorry_Span.setSpan(new ForegroundColorSpan(getResource().getColor(R.color.mycolor), 36, 42, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    sorry_Msg.setText(sorry_Span);
于 2013-01-18T13:38:49.310 回答
5

您的颜色 XML 应如下所示:

<?xml version="1.0" encoding="utf-8"?>


<resources>
    <color name="blue_color">#ff0000FF</color>    
</resources>

编辑:更改为:

sorry_Span.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.blue_txt)), 36, 42, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
于 2013-01-18T13:06:19.170 回答
0

getContext().getColor(R.color.black); 现在它自 android 6.0 (API 22+) 以来已被弃用

ContextCompat 是一个用基本上下文替换一些工作的类

    val wordTwo: Spannable = SpannableString("Your new message")

    wordTwo.setSpan(
        ForegroundColorSpan(ContextCompat.getColor(requireContext(), R.color.red)),
        0,
        wordTwo.length,
        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
    )
于 2021-02-02T04:00:17.267 回答