itemValue = "Your Hilighted Text";
if (itemValue != null) {
int startPos = itemValue.toLowerCase(Locale.US).indexOf(getTextToFilter().toLowerCase(Locale.US));
int endPos = startPos + getTextToFilter().length();
if (startPos != -1) {
Spannable spannable = new SpannableString(itemValue);
ColorStateList blueColor = new ColorStateList(new int[][] { new int[] {}}, new int[] { Color.parseColor("#14A4D8") });
TextAppearanceSpan highlightSpan = new TextAppearanceSpan(null, Typeface.BOLD, -1, blueColor, null);
spannable.setSpan(highlightSpan, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tvHilight.setText(spannable);
} else
tvHilight.setText(itemValue);
}
}
Для подсветки используйте «BackgroundColorSpan». Для подчеркивания используйте 'UnderlineSpan'. Для рисования вам понадобится специальное решение. Возможно, используйте 'StaticLayout' для хранения текста и touch-events для рисования' onDraw (Canvas) 'внутри пользовательского' View'. «StaticLayout» может обрабатывать промежутки, поэтому он соответствует вашим требованиям. – Vikram
Извините, мой английский не очень хорошо. Я имею в виду, как позволить пользователю сделать это? –
'Я имею в виду, как это разрешить пользователю?' Да, мой комментарий говорит вам, как позволить пользователю сделать это. Конечно, реализация потребует большой работы. Насколько мне известно, будет сложно найти код/библиотеку, которая полностью соответствует вашим требованиям. – Vikram