2013-01-26 3 views
6

Этот вопрос является продолжением до моего последнего вопроса: How to highlight text like Android spell-checker?Как установить цвет UnderlineSpan?

Я использую UnderlineSpan подчеркнуть текст в EditText, но мне нужно подчеркивание быть IN COLOR, как этот снимок экрана проверки орфографии:

enter image description here

+0

Это, пожалуй, лучшее, что вы будете делать: HTTP : //stackoverflow.com/questions/7684560/change-the-color-of-the-underline-in-android ... Или, возможно: http://stackoverflow.com/questions/13238298/android-change-underline -color-from-an-edittext-dynamically – Eric

+0

Спасибо, но, к сожалению, первое решение не сработало (оба ответа), и я не могу использовать второй, так как мое приложение - это клавиатура, которая не может напрямую обращаться к EditText. –

+0

Проблема в том, что для этого не существует API-метода, по крайней мере, на Android. – Eric

ответ

2

к сожалению, вы не можете сделать это только с Span - нет открытых методов, чтобы сделать то, что вы спрашиваете. Существует метод установки цвета подчеркивания в TextPaint независимо от цвета текста (вы можете увидеть его в исходном коде для SuggestionSpan), но it's hidden.

Если вы можете получить доступ к EditText, вы можете обработать Span и нарисовать подчеркивание самостоятельно, но в противном случае вам не повезло.

0

Это, как я сделал это работает

Spanned part_1 = Html.fromHtml(getString(R.string.part1)); 
Spanned part_2 = Html.fromHtml("<u><font color='#2eb6f0'>Text in blue</font></u>"); 
Spanned part_3 = Html.fromHtml(getString(R.string.part3)); 
Spanned output = (Spanned) TextUtils.concat(part_1, part_2, part_3); 

textview.setText(output, TextView.BufferType.SPANNABLE); 
1

здесь функция, которую можно использовать для установки цвета линии ниже текста

public void addUnderLineLink(TextView mTextView) { 
    if (mTextView != null) { 
     SpannableString content = new SpannableString(mTextView.getText().toString()); 
     UnderlineSpan us=new UnderlineSpan(); 
     TextPaint tp=new TextPaint(); 
     tp.setColor(ContextCompat.getColor(getContext(),R.color.white)); 
     us.updateDrawState(tp); 
     content.setSpan(us, 0, mTextView.getText().toString().length(), 0); 
     mTextView.setText(content); 
    } 
} 
Смежные вопросы