2013-01-26 14 views
6

To pytanie jest kontynuacją mojego ostatniego pytania: How to highlight text like Android spell-checker?Jak ustawić kolor UnderlineSpan?

Używam UnderlineSpan podkreślić tekst w EditText ale muszę podkreślenie być w kolorze jak ten zrzut ekranu sprawdzania pisowni:

enter image description here

+0

Jest to prawdopodobnie najlepiej zrobisz: http : //stackoverflow.com/questions/7684560/change-the-color-of-the-underline-in-android ... Lub, być może: http://stackoverflow.com/questions/13238298/android-change-underline -color-from-an-edittext-dynamically – Eric

+0

Dziękuję, ale niestety pierwsze rozwiązanie nie zadziałało (obie odpowiedzi) i nie mogę użyć drugiego, ponieważ moja aplikacja to klawiatura, która nie ma bezpośredniego dostępu do EditText. –

+0

Problem polega na tym, że nie ma na to metody opartej na API, przynajmniej nie w systemie Android. – Eric

Odpowiedz

2

Niestety, nie można tego zrobić wyłącznie z Span - nie istnieją żadne metody publiczne do tego, co można zapytać. Istnieje metoda ustawiania koloru podkreślenia w TextPaint niezależnie od koloru tekstu (można go zobaczyć w kodzie źródłowym w funkcji SuggestionSpan), ale it's hidden.

Jeśli możesz uzyskać dostęp do EditText, możesz obsłużyć Span i narysować podkreślenie samodzielnie, ale poza tym masz pecha.

0

W ten sposób udało mi się pracować

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

tutaj jest funkcja, które można wykorzystać, aby ustawić kolor linii poniżej tekstu

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); 
    } 
} 
Powiązane problemy