編集テキストで名前を強調表示したいので、
それらの単語を含む文字列配列があります。
私は次のコードを作成しました。これは、編集テキストに書かれた単語が単語配列で見つかった場合にそれを強調表示します。
final Handler handler = new Handler();
final Runnable r = new Runnable()
{
public void run()
{
String allText = mac.getText().toString();
for(int i=0;i<allText.length();i++){
for(int j=0;j<darkBlue.length;j++){
if(allText.indexOf(darkBlue[j])!=-1){
Spannable WordtoSpan = new SpannableString(allText);
WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), allText.indexOf(darkBlue[j]), allText.indexOf(darkBlue[j])+darkBlue[j].length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mac.setText(WordtoSpan);
mac.setSelection(mac.getText().length());//put the cursor at the end of the text.
}
}
}
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(r, 1000);
問題は、毎秒 UI が再度レンダリングされるため、キーボードを操作できず、すべての動作が遅くなることです。
文字列の配列からAndroidのテキスト編集でいくつかの単語を強調表示するためのより良い代替手段を知っていますか?