Я ищу способ найти различные строки в TextView и заменить их стилизованными SpannableStrings.Как заменить несколько строк на TexView для SpannableStrings?
Я нашел этот код в How to use SpannableString with Regex in android?, что делает только что для одной строки:
public class SpanTest extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String dispStr = "This has the string ABCDEF in it \nSo does this :ABCDEF - see!\nAnd again ABCD here";
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText(dispStr);
changeTextinView(tv, "ABC", Color.RED);
}
private void changeTextinView(TextView tv, String target, int colour) {
String vString = (String) tv.getText();
int startSpan = 0, endSpan = 0;
Spannable spanRange = new SpannableString(vString);
while (true) {
startSpan = vString.indexOf(target, endSpan);
ForegroundColorSpan foreColour = new ForegroundColorSpan(colour);
// Need a NEW span object every loop, else it just moves the span
if (startSpan < 0)
break;
endSpan = startSpan + target.length();
spanRange.setSpan(foreColour, startSpan, endSpan,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
tv.setText(spanRange);
}
}
Это прекрасно работает, но я не уверен, как адаптировать его использовать, если с несколькими строками. Я попытался повторно реализовать его с помощью SpannableStringBuilder.replace, поэтому я могу запускать этот метод несколько раз, сохраняя прежний стиль, но не выполнив его.
Любые идеи?
Спасибо!
Отлично, очень просто. Благодаря! – Cruclax