programacion - subrayar texto boton android studio
Para dibujar un subrayado debajo de la vista de texto en Android (6)
Quiero dibujar el subrayado debajo de mi TextView
. He buscado algunos contenidos pero no he podido encontrar nada fructífero.
¿Puede alguien ayudarme aquí?
Funciona para mí
tv.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);
Hay tres formas de subrayar el texto en TextView.
setPaintFlags(); de TextView
Déjame explicarte todos los enfoques:
Primer enfoque
Para reforzar el texto en TextView debes usar SpannableString
String udata="Underlined Text";
SpannableString content = new SpannableString(udata);
content.setSpan(new UnderlineSpan(), 0, udata.length(), 0);
mTextView.setText(content);
Segundo enfoque
Puede utilizar el método setPaintFlags(); de TextView para subrayar el texto de TextView.
Por ej.
mTextView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
mTextView.setText("This text will be underlined");
Puede referir constantes de la clase Paint si desea atacar el texto.
3er enfoque
Hacer uso de Html.fromHtml(htmlString);
String htmlString="<u>This text will be underlined</u>";
mTextView.setText(Html.fromHtml(htmlString));
O
txtView.setText(Html.fromHtml("<u>underlined</u> text"));
Para cualquiera que todavía esté mirando esta búsqueda. Esto es para un hipervínculo, pero puede modificarlo simplemente por un subrayado:
Cree un dibujable (hyperlink_underline.xml):
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="-10dp"
android:left="-10dp"
android:right="-10dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<stroke android:width="2dp"
android:color="#3498db"/>
</shape>
</item>
</layer-list>
Crea un nuevo estilo:
<style name="Hyperlink">
<item name="android:textColor">#3498db</item>
<item name="android:background">@drawable/hyperlink_underline</item>
</style>
Luego usa este estilo en tu TextView:
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
local:MvxBind="Text Id; Click ShowJobInfoCommand"
style="@style/HyperLink"/>
Si su TextView tiene un ancho fijo, una solución alternativa puede ser crear una Vista que se vea como un subrayado y colocarla justo debajo de su TextView.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/myTextView"
android:layout_width="20dp"
android:layout_height="wrap_content"/>
<View
android:layout_width="20dp"
android:layout_height="1dp"
android:layout_below="@+id/myTextView"
android:background="#CCCCCC"/>
</RelativeLayout>
Una solución simple y sostenible es crear una lista de capas y convertirla en el fondo de su TextView:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="-5dp"
android:right="-5dp"
android:top="-5dp">
<shape>
<stroke
android:width="1.5dp"
android:color="@color/colorAccent" />
</shape>
</item>
</layer-list>
simplemente rodee su texto con la etiqueta <u> en su archivo de recursos string.xml
<string name="your_string"><u>Underlined text</u></string>
y en tu Actividad / Fragmento
mTextView.setText(R.string.your_string);