无法获得SpannableString的效果

时间:2013-10-03 04:46:23

标签: android string spannablestring

我想在字符串“confirm_msg”

中添加金额
    final int colorGreen = getResources().getColor(R.color.green_dark);
    SpannableString spannable = new SpannableString("$" +amount);
    spannable.setSpan(new ForegroundColorSpan(colorGreen), 0, ("$" +   amount).length(), 0);
    txtConfirmMSG.setText(getString(R.string.confirm_msg, spannable));

这是xml中的字符串:

    <string name="confirm_msg">PLEASE CONFIRM THAT YOU WISH TO SEND A  %1$s </string>

2 个答案:

答案 0 :(得分:2)

// try this way

<string name="confirm_msg">PLEASE CONFIRM THAT YOU WISH TO SEND A  %1$d$ </string>

 int amount = 150000;
        txtConfirmMSG.setText(setSpanColor(String.format(getString(R.string.confirm_msg),amount),String.valueOf(amount)));

 private SpannableStringBuilder setSpanColor(
            final String str,final String text) {
        SpannableStringBuilder ssb = new SpannableStringBuilder(str);

        if (str.contains(text)) {
            ssb.setSpan(new ClickableSpan() {
                @Override
                public void onClick(View view) {
                }

                @Override
                public void updateDrawState(TextPaint ds) {
                    ds.setColor(getResources().getColor(R.color.green_dark));
                }
            }, str.indexOf(text), str.indexOf(text)
                    + text.length(), 0);
        }
        return ssb;

    }

答案 1 :(得分:0)

最好使用HTML在Spannable中实现不同的颜色。

您可以检查答案:Highlighting Text Color using Html.fromHtml() in Android?