Puede hacerlo en código encontrando y reemplazando las URLSpan
instancias con versiones que no subrayan. Después de llamar Linkify.addLinks()
, llame a la función stripUnderlines()
pegada a continuación en cada uno de sus TextView
s:
private void stripUnderlines(TextView textView) {
Spannable s = new SpannableString(textView.getText());
URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class);
for (URLSpan span: spans) {
int start = s.getSpanStart(span);
int end = s.getSpanEnd(span);
s.removeSpan(span);
span = new URLSpanNoUnderline(span.getURL());
s.setSpan(span, start, end, 0);
}
textView.setText(s);
}
Esto requiere una versión personalizada de URLSpan que no habilita la propiedad "subrayado" de TextPaint:
private class URLSpanNoUnderline extends URLSpan {
public URLSpanNoUnderline(String url) {
super(url);
}
@Override public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
}
tel:2125551212
. Lanew URLSpanNoUnderline
llamada debe pasarsespan.getURL()
para retener esta información; de lo contrario, generará enlaces defectuosos que causan excepciones al hacer clic. He colocado esta solución propuesta en la cola de edición para su respuesta, ya que yo mismo no tengo permisos de edición.Spannable s = (Spannable) textView.getText()
conSpannable s = new SpannableString(textView.getText());
no funciona para mí. Si vuelvo a la transmisión, funciona, solo si TextView tieneandroid:textIsSelectable=true
. ¿Alguna idea de por qué?android:autoLink
atributo? De lo contrario, parece que tiene que crear sus propios métodos onclick para la funcionalidad incorporada.Dado un textView y contenido:
A continuación, se muestra una forma concisa de eliminar los subrayados de los hipervínculos:
Esto se basa en el enfoque sugerido por robUx4.
Para que se pueda hacer clic en los enlaces, también debe llamar a:
fuente
String content = getResources().getString(R.string.content);
que lo que incluye un enlace ya no funciona.res/values/strings.xml
que contiene exactamente lo mismo que el ejemplo. ¿Puedes probar en tu final?>
=>
,<
=<
etc. Por ejemplo:<string name="link_to_google" ><a href="https://www.google.com/">Google</a></string>
consulte developer.android.com/guide/topics/resources/string-resourceUnderlineSpan
ya existe, pero solo puede establecer el subrayado.Otra solución es agregar un intervalo sin subrayado en cada uno de los existentes
URLSpan
. Por tanto, el estado subrayado se desactiva justo antes de pintar. De esta manera, mantiene susURLSpan
clases (posiblemente personalizadas) y todos los demás estilos configurados en otro lugar.Así es como se configura sin eliminar el objeto URLSpan existente:
fuente
Implementé una solución que, en mi opinión, es más elegante. He hecho una costumbre
TextView
. De esta manera, no es necesario ejecutar código adicional para todos los queTextView
tengan hipervínculos.Y código para UrlSpanNoUnderline:
fuente
Aquí está la función de extensión de Kotlin :
Uso:
fuente
Siempre que, intente eliminar el subrayado de la URL con spannable, sugiero solo estas cosas:
1> Crear clase personalizada:
Esto requiere una versión personalizada de URLSpan que no habilita la propiedad "subrayado" de TextPaint
2> setSpan con texto extensible:
Aquí, spannableText es un objeto de SpannableString ... !!!
fuente
Si está utilizando la propiedad de enlace automático de Textview y desea eliminar los subrayados, puede usarla:
Primero, extienda UnderlineSpan y elimine el subrayado:
En segundo lugar, cree una instancia de NoUnderlineSpan, cree un Spannable a partir del texto String y establezca el span en spannable:
Referencia: http://prog3.com/sbdm/blog/maosidiaoxian/article/details/39156563
fuente
Si solo quiere el texto y no se preocupa por el enlace URL
Esto eliminará el enlace pero MANTENER el texto
no se requieren clases adicionales
fuente
Aquí está mi método
Llámalo así
Appcontroller es mi clase de aplicación donde coloco este método para poder acceder a él desde cualquier lugar
fuente
Para los usuarios de Xamarin que encuentren esta publicación, así es como lo hice funcionar:
fuente
fuente