¿Cómo se subraya un texto en un archivo XML? No puedo encontrar una opción en textStyle
.
textView.setText(Html.fromHtml("<u>"+"testest"+"</u>"));
¿Cómo se subraya un texto en un archivo XML? No puedo encontrar una opción en textStyle
.
textView.setText(Html.fromHtml("<u>"+"testest"+"</u>"));
Respuestas:
Si está utilizando un archivo XML recurso de cadena (soportes etiquetas HTML), se puede hacer uso de <b> </b>
, <i> </i>
y <u> </u>
.
<resources>
<string name="your_string_here">
This is an <u>underline</u>.
</string>
</resources>
Si desea subrayar algo del código, use:
TextView tv = (TextView) view.findViewById(R.id.tv);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
tv.setText(content);
Espero que esto ayude
<u>
etiquetas pasantes subyacentes no funcionan, por ejemplo, a veces si está utilizando una fuente personalizada. Sin embargo, la programación subyacente de by UnderlineSpan
nunca me ha fallado, por lo que la recomendaría como la solución más confiable.
<u>
y <\u>
en XML, y es suficiente.
Utilizar este:
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>
Si no funciona entonces
<resource>
<string name="your_string_here">This is an <u>underline</u>.</string>
Porque "<" podría ser una palabra clave en algún momento.
Y para mostrar
TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(Html.fromHtml(getString(R.string.your_string_here)));
En primer lugar, vaya al archivo String.xml
puede agregar cualquier atributo HTML como cursiva, negrita o subrayado aquí.
<resources>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
Otra forma de hacerlo es crear un componente personalizado que amplíe TextView. Es bueno para los casos en los que necesita tener varios TextViews subrayados.
Aquí está el código del 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);
}
}
Y cómo usarlo en xml:
<com.myapp.components.LinkTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!" />
Para completar la respuesta de Bhavin. Por ejemplo, para agregar subrayado o redirección.
((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>
y puede conocer la etiqueta compatible aquí: http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html
Puede utilizar el marcado de abajo, pero tenga en cuenta que si establece el textAllCaps
que true
el efecto de subrayado se retira.
<resource>
<string name="my_string_value">I am <u>underlined</u>.</string>
</resources>
Nota
Usando textAllCaps con una cadena (login_change_settings) que contiene marcado; el marcado será eliminado por la conversión de mayúsculas
La transformación de texto textAllCaps terminará llamando a toString en CharSequence, que tiene el efecto neto de eliminar cualquier marcado como. Esta comprobación busca usos de cadenas que contengan marcas que también especifiquen textAllCaps = true.
Hay diferentes formas de lograr texto subrayado en un TextView de Android.
1. <u>This is my underlined text</u>
o
I just want to underline <u>this</u> word
2. Puede hacer lo mismo mediante programación.
`textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);`
Se puede hacer creando un SpannableString y luego configurándolo como la propiedad de texto TextView
SpannableString text = new SpannableString("Voglio sottolineare solo questa parola");
text.setSpan(new UnderlineSpan(), 25, 6, 0);
textView.setText(text);
Utilicé el método siguiente, funcionó para mí. A continuación se muestra un ejemplo de Button, pero también podemos usarlo en TextView.
Button btnClickMe = (Button) findViewById(R.id.btn_click_me);
btnClickMe.setPaintFlags(btnClickMe.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Si desea comparar la cadena de texto o el texto cambiará dinámicamente, puede crear una vista en el diseño de restricción que se ajustará de acuerdo con la longitud del texto como este
<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");
También es compatible con niños de TextView como EditText, Button, Checkbox
Si tu quieres
- ¿Texto subrayado en el que se puede hacer clic?
- ¿Subrayar varias partes de TextView?
Entonces revisa esta respuesta
style="text-decoration: underline;"