2016-05-31 6 views
0

たとえば、私はtextview(複数行):aaaaaaaaabbbbaaaを持っています。私は 'bbb'文字だけの背景を設定したい。私はSpannableを使用しようとしますが、私の背景はdrawableからのイメージです。 多くのありがとうございます。あなたがそれを行うが、正しい方法で中国のdoesnの `tの仕事ができBackgroundColorSpanを使用してTextViewの一部だけの背景を設定します

+0

コードとレイアウトのスクリーンショットを表示して、その外観を確認してください。 – blizzard

+0

代わりに 'ReplacementSpan'を試してください – pskink

+0

あなたのユースケースを処理できる組み込みのスパンがあるとは思いません。カスタムスパンを作成することができます。あるいは、複数の 'TextViews'を使用してください。または、 'WebView'を使用します。 – CommonsWare

答えて

1

enter image description here

private void replaceText(TextView text, String str, int color) { 
    Spannable raw = new SpannableString(text.getText()); 
    BackgroundColorSpan[] spans = raw.getSpans(0,raw.length(),BackgroundColorSpan.class); 

    for (BackgroundColorSpan span : spans) { 
     raw.removeSpan(span); 
    } 
    int index = TextUtils.indexOf(raw, str); 
    while (index >= 0) { 
     raw.setSpan(new BackgroundColorSpan(color), index, index + str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
     index = TextUtils.indexOf(raw, str, index + str.length()); 
    } 
    text.setText(raw); 
} 
+0

ありがとうございます。しかし、私がバックグラウンドを追加する必要がある場合はイメージ(汚れの色ではありません)です。可能です? –

+0

ありがとうございます。それは非常にうまくいく –

関連する問題