TextView에서 다른 문자열을 찾고 스타일이 적용된 SpannableString으로 바꾸는 방법을 찾고 있습니다.Texable에서 SpannableStrings에 여러 문자열을 대체하는 방법은 무엇입니까?
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);
}
}
이 잘 작동하지만이 경우 여러 문자열을 사용하는 적응하는 방법을 잘 모르겠어요 :
나는 하나의 문자열을 그냥 않는 How to use SpannableString with Regex in android?에이 코드를 발견했다. SpannableStringBuilder.replace를 사용하여 다시 구현하려고 했으므로 이전 스타일을 유지하면서 여러 번 메서드를 실행할 수는 있지만 실패했습니다.어떤 아이디어?
감사합니다.
우수하고 간단합니다. 감사! – Cruclax