2012-04-04 7 views
71

Wie unterstreichen Sie einen Text in einer XML-Datei? Ich kann keine Option in textStyle finden.Wie unterstreichen Sie einen Text in Android XML?

+0

u haben, versuchen 'Stil mit = "text-decoration: underline;"' –

+0

konnte Sie sollten in vollem Umfang wie man das benutzt? –

+0

haben Sie versuchen, diese 'textView.setText (Html.fromHtml (" "+" testest "+" "));' –

Antwort

114

Wenn Sie eine XML-Datei für die Zeichenfolgenressource verwenden (unterstützt HTML-Tags), kann dies mit <b> </b>, <i> </i> und <u> </u> erfolgen.

<resources> 
    <string name="your_string_here"> 
     This is an <u>underline</u>. 
    </string> 
</resources> 

Wenn Sie etwas von Code verwenden zu unterstreichen wollen:

TextView tv = (TextView) view.findViewById(R.id.tv); 
SpannableString content = new SpannableString("Content"); 
content.setSpan(new UnderlineSpan(), 0, content.length(), 0); 
tv.setText(content); 

this helps

+5

Ich habe dies versucht. die Zeichenfolge wird nicht unterstrichen angezeigt? –

+0

Können Sie mir einen Anwendungsfall zur Verfügung stellen? –

+3

Ich bin auf Fälle gestoßen, wenn darunter liegende '' Tags nicht funktionieren, z. manchmal, wenn Sie eine benutzerdefinierte Schriftart verwenden. "UnderlineSpan", das programmatisch von "UnderlineSpan" unterlag, ist mir jedoch nie geschadet, daher würde ich es als die zuverlässigste Lösung empfehlen. –

17
<resource> 
    <string name="your_string_here">This is an <u>underline</u>.</string> 
</resources> 

Wenn es nicht funktioniert, dann

<resource> 
<string name="your_string_here">This is an &lt;u>underline&lt;/u>.</string> 

Da "<" könnte ein Schlüsselwort irgendwann sein.

und zur Anzeige

TextView textView = (TextView) view.findViewById(R.id.textview); 
textView.setText(Html.fromHtml(getString(R.string.your_string_here))); 
+0

Funktioniert ein Leckerbissen, danke –

+1

Das funktioniert ... aber wenn Sie aus irgendeinem Grund die TextView auf das xml-Attribut android: textAllCaps = "true" setzen, wird die Unterstreichung nicht angezeigt. Entfernen Sie diesen Modifizierer und die Unterstreichung wird wie gewünscht angezeigt. Nur ein Kopf hoch :) –

40

Mit dieser:

TextView txt = (TextView) findViewById(R.id.Textview1); 
txt.setPaintFlags(txt.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
+0

Beachten Sie, dass diese Lösung immer den ganzen Text unterstreicht, also ist es nicht machbar, wenn man nur einen Teil davon unterstreichen möchte. Dafür brauchst du 'UnderlineSpan'. –

+2

Dies ist die eleganteste Antwort für die Unterstreichung der gesamten Textansicht – voghDev

2

allererst Datei String.xml gehen

Sie HTML hinzufügen können Attribute wie, kursiv oder fett oder unterstrichen Hier.

<resource> 
     <string name="your_string_here">This is an <u>underline</u>.</string> 
    </resources> 
<resource> 
     <string name="your_string_here">This is an <u>underline</u>.</string> 
    </resources> 
+1

Dies wurde bereits oben beantwortet. – Shygar

0

I unten Methode verwendet wird, ist es für mich arbeiten. Unten ist ein Beispiel für Button, aber wir können es auch in TextView verwenden.

Button btnClickMe= (Button) findViewById(R.id.btn_click_me); 
btnClickMe.setPaintFlags(btnClickMe.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
0

Sie können die Markup unten verwenden, aber beachten Sie, dass, wenn Sie den textAllCaps zu true der Unterstreichungseffekt gesetzt entfernt werden würde.

<resource> 
    <string name="my_string_value">I am <u>underlined</u>.</string> 
</resources> 


Hinweis

Mit textAllCaps mit einer Schnur (login_change_settings) das Markup enthält; das Markup wird durch die Caps-Konvertierung fallen

Die TextAllCaps Text Transformation wird am Ende toString auf der CharSequence aufrufen, die den Nettoeffekt hat, alle Markup wie entfernen. Diese Prüfung sucht nach Verwendungen von Zeichenfolgen mit Markup, die auch textAllCaps = true angeben.

2

Eine weitere Möglichkeit besteht darin, eine benutzerdefinierte Komponente zu erstellen, die TextView erweitert.Es ist gut für Fälle, in denen Sie mehrere unterstrichene TextViews benötigen.

Hier ist der Code für die Komponente:

package com.myapp.components; 

import android.content.Context; 
import android.support.v7.widget.AppCompatTextView; 
import android.text.SpannableString; 
import android.text.style.UnderlineSpan; 
import android.util.AttributeSet; 

public class LinkTextView extends AppCompatTextView { 
    public LinkTextView(Context context) { 
     this(context, null); 
    } 

    public LinkTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    public void setText(CharSequence text, BufferType type) { 
     SpannableString content = new SpannableString(text); 
     content.setSpan(new UnderlineSpan(), 0, content.length(), 0); 

     super.setText(content, type); 
    } 
} 

Und wie es in xml zu verwenden:

<com.myapp.components.LinkTextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Hello World!" /> 
Verwandte Themen