Come si sottolinea un testo in un file XML? Non riesco a trovare un'opzione in textStyle
.
textView.setText(Html.fromHtml("<u>"+"testest"+"</u>"));
Come si sottolinea un testo in un file XML? Non riesco a trovare un'opzione in textStyle
.
textView.setText(Html.fromHtml("<u>"+"testest"+"</u>"));
Risposte:
Se stai usando un file xml di risorse stringa (supporta tag HTML), puoi farlo usando <b> </b>
, <i> </i>
e <u> </u>
.
<resources>
<string name="your_string_here">
This is an <u>underline</u>.
</string>
</resources>
Se vuoi sottolineare qualcosa dall'uso del codice:
TextView tv = (TextView) view.findViewById(R.id.tv);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
tv.setText(content);
Spero che questo ti aiuti
<u>
tag sottostanti non funzionano, ad esempio a volte se si utilizza un carattere personalizzato. Tuttavia, il sottostante programmaticamente di non UnderlineSpan
ha mai fallito su di me, quindi lo consiglierei come la soluzione più affidabile.
<u>
e <\u>
in XML ed è sufficiente.
Usa questo:
TextView txt = (TextView) findViewById(R.id.Textview1);
txt.setPaintFlags(txt.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
UnderlineSpan
.
<resource>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
Se non funziona allora
<resource>
<string name="your_string_here">This is an <u>underline</u>.</string>
Perché "<" potrebbe essere una parola chiave in un dato momento.
E per la visualizzazione
TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(Html.fromHtml(getString(R.string.your_string_here)));
Prima di tutto, vai al file String.xml
puoi aggiungere qualsiasi attributo HTML come, corsivo o grassetto o sottolineato qui.
<resources>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
Un altro modo per farlo è creare un componente personalizzato che estenda TextView. È utile per i casi in cui è necessario disporre di più TextView sottolineate.
Ecco il codice per il componente:
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);
}
}
E come usarlo in xml:
<com.myapp.components.LinkTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!" />
Per completare la risposta di Bhavin. Ad esempio, per aggiungere sottolineatura o reindirizzamento.
((TextView) findViewById(R.id.tv_cgu)).setText(Html.fromHtml(getString(R.string.upload_poi_CGU)));
<string name="upload_poi_CGU"><![CDATA[ J\'accepte les <a href="">conditions générales</a>]]></string>
e puoi conoscere il tag compatibile qui: http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html
È possibile utilizzare il markup di seguito, ma è da notare che se si imposta il textAllCaps
per true
l'effetto sottolineatura sarebbe stato rimosso.
<resource>
<string name="my_string_value">I am <u>underlined</u>.</string>
</resources>
Nota
Utilizzo di textAllCaps con una stringa (login_change_settings) che contiene markup; il markup verrà eliminato dalla conversione dei maiuscoli
La trasformazione del testo textAllCaps finirà per chiamare toString su CharSequence, che ha l'effetto netto di rimuovere qualsiasi markup come. Questo controllo cerca gli utilizzi delle stringhe contenenti markup che specificano anche textAllCaps = true.
Esistono diversi modi per ottenere il testo sottolineato in un TextView Android.
1. <u>This is my underlined text</u>
o
I just want to underline <u>this</u> word
2. Puoi fare lo stesso a livello di programmazione.
`textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);`
3.Può essere fatto creando una SpannableString e quindi impostandola come proprietà di testo TextView
SpannableString text = new SpannableString("Voglio sottolineare solo questa parola");
text.setSpan(new UnderlineSpan(), 25, 6, 0);
textView.setText(text);
Ho usato il metodo di seguito, ha funzionato per me. Di seguito è riportato un esempio per Button, ma possiamo usarlo anche in TextView.
Button btnClickMe = (Button) findViewById(R.id.btn_click_me);
btnClickMe.setPaintFlags(btnClickMe.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Se vuoi confrontare la stringa di testo o il testo cambierà dinamicamente allora puoi creare una vista nel layout Vincolo si adatterà in base alla lunghezza del testo in questo modo
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txt_Previous"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="8dp"
android:gravity="center"
android:text="Last Month Rankings"
android:textColor="@color/colorBlue"
android:textSize="15sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<View
android:layout_width="0dp"
android:layout_height="0.7dp"
android:background="@color/colorBlue"
app:layout_constraintEnd_toEndOf="@+id/txt_Previous"
app:layout_constraintStart_toStartOf="@+id/txt_Previous"
app:layout_constraintBottom_toBottomOf="@id/txt_Previous"/>
</android.support.constraint.ConstraintLayout>
public void setUnderLineText(TextView tv, String textToUnderLine) {
String tvt = tv.getText().toString();
int ofe = tvt.indexOf(textToUnderLine, 0);
UnderlineSpan underlineSpan = new UnderlineSpan();
SpannableString wordToSpan = new SpannableString(tv.getText());
for (int ofs = 0; ofs < tvt.length() && ofe != -1; ofs = ofe + 1) {
ofe = tvt.indexOf(textToUnderLine, ofs);
if (ofe == -1)
break;
else {
wordToSpan.setSpan(underlineSpan, ofe, ofe + textToUnderLine.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(wordToSpan, TextView.BufferType.SPANNABLE);
}
}
}
TextView tv = findViewById(R.id.tv);
tv.setText("some text");
setUnderLineText(tv, "some");
Supporta anche i figli TextView come EditText, Button, Checkbox
Se vuoi
- Sottolineato cliccabile?
- Sottolineare più parti di TextView?
Quindi controlla questa risposta
style="text-decoration: underline;"