2015-03-12 6 views
1

Я хочу знать, если я могу позволить пользователю сделать некоторые из этого в ListView (или дефект в TextView): enter image description hereКак разрешить пользователю делать аннотации, такие как выделение, подчеркивание или рисование в виде списка или текстовом виде?

Спасибо заранее.

+1

Для подсветки используйте «BackgroundColorSpan». Для подчеркивания используйте 'UnderlineSpan'. Для рисования вам понадобится специальное решение. Возможно, используйте 'StaticLayout' для хранения текста и touch-events для рисования' onDraw (Canvas) 'внутри пользовательского' View'. «StaticLayout» может обрабатывать промежутки, поэтому он соответствует вашим требованиям. – Vikram

+0

Извините, мой английский не очень хорошо. Я имею в виду, как позволить пользователю сделать это? –

+1

'Я имею в виду, как это разрешить пользователю?' Да, мой комментарий говорит вам, как позволить пользователю сделать это. Конечно, реализация потребует большой работы. Насколько мне известно, будет сложно найти код/​​библиотеку, которая полностью соответствует вашим требованиям. – Vikram

ответ

0
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); 
    } 
}