Spanable String颜色结果黑色

Usm*_*urd 1 android colors

是否有任何人指导我,为什么导致StringSpanable使用用户自定义颜色color.xml不会导致低于预期的结果示例代码

    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);
Run Code Online (Sandbox Code Playgroud)

Color.Blue它运行时,它的结果很好,但是当R.color.blue_txt它运行时它的空白文本在此先感谢您的帮助

Usm*_*urd 10

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

    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);
Run Code Online (Sandbox Code Playgroud)

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

Color.rgb(int red,int green,int blue)
Run Code Online (Sandbox Code Playgroud)

所以使用这个我自己定制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);
Run Code Online (Sandbox Code Playgroud)


小智 5

你的颜色XML应该是这样的:

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


<resources>
    <color name="blue_color">#ff0000FF</color>    
</resources>
Run Code Online (Sandbox Code Playgroud)

编辑:更改为:

sorry_Span.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.blue_txt)), 36, 42, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
Run Code Online (Sandbox Code Playgroud)