Me preguntaba si hay una manera fácil de tachar texto dentro de un widget de aplicación en Android. En una actividad normal, es bastante fácil, utilizando indicadores de vista de texto:
textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
Pero como en un widget de aplicación, solo puedo usar vistas remotas ... No sé si esto es posible
Alguien sabe algo sobre esto?
¡Gracias!
android
widget
textview
strikethrough
Antonio
fuente
fuente
xml-only
solución como yo: stackoverflow.com/a/49062515/3579786Respuestas:
Puedes usar esto:
Por supuesto, también puede agregar otras banderas de la clase android.graphics.Paint.
fuente
Para hacerlo programáticamente en una vista de texto, no probado en otras vistas >>
fuente
Otra forma de hacerlo mediante programación que se parece un poco menos a un truco que la forma Paint:
En lugar de hacer:
hacer:
fuente
RemoteView
Actualización de 2015: amigos, esto es para versiones muy antiguas de Android. ¡Vea otras respuestas para soluciones modernas!
Para tachar la vista de texto completo, puede usar una imagen de fondo específica para simular el efecto tachado:
Donde el
bg_strikethrough
dibujable es un parche de 9 que mantiene una línea sólida en el medio, creciendo a ambos lados, con la cantidad de relleno que creas razonable. He usado uno como este:(ampliado para mayor claridad ... ¡1300%!)
Esa es mi versión HDPI, así que guárdela (la primera http://i.stack.imgur.com/nt6BK.png ) como
res/drawable-hdpi/bg_strikethrough.9.png
y la configuración funcionará así:fuente
Para hacer esto puedes usar esto
y para eliminar puedes usar esto
fuente
Si tiene una sola palabra, podemos usar dibujable. El siguiente es el ejemplo:
Si tiene varias líneas, puede usar el siguiente código:
fuente
Aquí hay una extensión para todos ustedes, amigos de Kotlin
Uso
Limitación
Los tachados solo pueden ser del mismo color que el texto
(es decir, el texto rojo y el tachado azul no es posible)
fuente
Para TextView multilínea, debe usar android.text.style.CharacterStyle de esta manera:
fuente
Es realmente fácil si está utilizando cadenas:
Y luego solo:
fuente
Agregue la línea a continuación: -
usa tu referencia en lugar de "tv"
fuente
prueba este código
fuente
Para Lollipop y superior. crear un dibujable
y úsalo como primer plano.
android:foreground="@drawable/strike_through"
fuente
agregas:
establece / agrega en su variable:
y luego agregue .setPaintFlags en variableTv:
fuente
Intenté algunas opciones, pero esto funciona mejor para mí:
salud
fuente
Los recursos de Android tienen un buen soporte de marcado HTML.
Los siguientes elementos HTML son compatibles:
Sin embargo, tenga en cuenta que no se representa en la vista previa de diseños de estudio de Android. Última prueba en Android Studio 3.3.1
Por ejemplo, el Tachado se verá así:
fuente
He hecho esto de forma regular (local)
TextView
, y debería funcionar en la variedad remota, ya que los documentos enumeran el método como equivalente entre los dos:remote_text_view.setText(Html.fromHtml("This is <del>crossed off</del>."));
fuente
<del>
no sea compatible conHtml.fromHtml()
. ¿Has probado<strike>
o<s>
?Lo sé, estoy respondiendo una vieja pregunta, podría ser útil para otra persona, para eliminar una porción particular de TextView mediante programación.
Entonces, en este código de ejemplo, 5 es la posición inicial y 8 es la posición final del texto que debe eliminarse, por lo que después de ejecutar este código podemos obtener el texto "necesidad" con tachado. Espero que sea útil para alguien más.
fuente