変化するテキストのすべての単語の色を変更したいと思います。これどうやってするの?
selected.setText( "ID".Color.RED + "data".Color.BLUE);
おそらく、このような関数(スパン可能を使用する)を使用して、各単語の色を変更できます
public Spannable getColoredStringSpannable(String text, int color,
int from, int to) {
Spannable WordtoSpan = new SpannableString(text);
WordtoSpan.setSpan(new ForegroundColorSpan(color), from, to,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return WordtoSpan;
}
使用できますSpannableString
SpannableString ss1= new SpannableString("ID");
ss1.setSpan(new ForegroundColorSpan(Color.RED), 0, ss1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
selected.append(ss1);
SpannableString ss2= new SpannableString("data");
ss2.setSpan(new ForegroundColorSpan(Color.BLUE), 0, ss2.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
selected.append(ss2);
単語をスペースで分割し、スパンを単語に設定できます。
例 :
TextView _tv = (TextView) findViewById( R.id.tv );
int[] color ={Color.BLUE,Color.RED,Color.GREEN};
String s =" My Dynamic Text";
String split[] = s.split("\\s");
int j=0;
for(int i=1;i<split.length;i++)
{
System.out.println(split[i]);
SpannableString ss2= new SpannableString(split[i]);
ss2.setSpan(new ForegroundColorSpan(color[j]), 0, ss2.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
_tv.append(ss2);
_tv.append(" ");
j++;
}
スナップショット