2011-01-12 20 views

Odpowiedz

18

Najprostszym rozwiązaniem jest prawdopodobnie tworzyć składnik zwyczaj UnderLineTextView powstałymi TextView przesłonić setText() i ustawienie całego tekstu, jak podkreślono, coś takiego (kod podkreślenia z linku, o którym mowa powyżej):

@Override 
public void setText(CharSequence text, BufferType type) { 
    // code to check text for null omitted 
    SpannableString content = new SpannableString(text); 
    content.setSpan(new UnderlineSpan(), 0, text.length(), 0); 
    super.setText(content, BufferType.SPANNABLE); 

} 

To jest po prostu ma tter używania nowego komponentu w układzie i ustawiania tekstu w zwykły sposób. Reszta jest obsługiwana automatycznie.

Więcej informacji na temat niestandardowych składników: http://developer.android.com/guide/topics/ui/custom-components.html

14

można podkreślenie tekstu na Html.fromHtml(String source)

Przykład:

textView.setText(Html.fromHtml("this is <u>underlined</u> text")); 
+0

Najprostsze rozwiązanie IMHO. – gnac

+0

To nie zadziała, ponieważ nawias otwierający tagów '' oraz '' nie jest chroniony. Dla właściwego przykładu zobacz http://stackoverflow.com/a/9955051/425183 – Ognyan

+0

rzeczywiście Najprostszym rozwiązaniem, txs – Hubert

1

Można również zrobić to za pomocą pliku /res/values/string.xml jeśli wolisz: Na przykład, w /res/values/string.xml ty można dodać wpis podobny:

<string name="createAccount"><u>Create Account</u></string> 

a następnie w metodzie onCreate (Bundle savedInstanceState) swojej działalności chcesz dodać następujący kod do spowodowania „Utwórz konto”> pojawiać jak podkreślono w interfejsie, który można ustawić na tekstowy tekst CreateAccountText zdefiniowany w pliku xml w/res/layout/dla Twojej aktywności:

TextView createAccountText = (TextView) findViewById(R.id.createAccountText); 
Resources res = getResources(); 
CharSequence styledText = res.getText(R.string.createAccount); 
createAccountText.setText(styledText, TextView.BufferType.SPANNABLE); 

Danny Remington - MacroSolve

+0

getResources(). GetText() rozwiązał mój problem, nie wiem dlaczego z 'textView.setText (getResources () .getString (R.string.string_id)); 'tekst nie został podkreślony. –

0

peter3 pisał przed rozszerzyć klasę TextView i zastąpić metodę setText.

To rozwiązanie nie zadziała, ponieważ metoda setText jest oznaczona jako FINALNA.

http://developer.android.com/reference/android/widget/TextView.html#setText(java.lang.CharSequence)

Nie wiem, czy kod może pracować z pewnymi modyfikacjami.

+0

Metoda, którą peter3 przesłania w swojej odpowiedzi, nie jest ostatecznym ostatecznym pustym tekstem setText (tekst CharSequence), ale publicznym void setText (tekst CharSequence, typ TextView.BufferType). Metoda opisana przez peter3 nie jest ostateczna. (Trochę za późno, żeby dodać komentarz, ale musiałem też dwa razy spojrzeć, więc pomyślałem, że warto o tym wspomnieć). – Stanley

0
SpannableString content = new SpannableString(name); 
content.setSpan(new UnderlineSpan(), 0, name.length(), 0); 
geometrical_textview.setText(content, TextView.BufferType.SPANNABLE); 
Powiązane problemy