Sé que esto es muy fácil (doh ...) pero estoy buscando una manera de ejecutar un método al tocar o hacer clic en una línea de texto TextView en una aplicación de Android.
Sigo pensando en oyentes de botones y llamadas de oyentes de métodos anónimos, pero parece que no se aplica a TextView.
¿Alguien puede señalarme un fragmento de código para mostrar cómo hacer clic o tocar un fragmento de texto en un TextView ejecuta un método?
TextView
- link.medium.com/TLq6s8ltc3Respuestas:
Puede configurar el controlador de clics en xml con estos atributos:
No olvide el atributo en el que se puede hacer clic, sin él no se llama al controlador de clics.
main.xml
MyActivity.java
fuente
setOnClickListener
establece elclickable
atributo, pero usar elonClick
atributo aparentemente no lo hace.onClick
que establece elclickable
atributo en Android 5.0 Lollipop (API 21). ¿Tal vez lo consideraron un error que esto no sucedió en versiones anteriores?Puede que esto no sea exactamente lo que está buscando, pero esto es lo que funcionó para lo que estoy haciendo. Todo esto es después de mi
onCreate
:fuente
OK, he respondido mi propia pregunta (¿pero es la mejor manera?)
Así es como se ejecuta un método cuando hace clic o toca un texto en un TextView:
y mi main.xml es:
fuente
Desde el interior de una actividad que llama un diseño y una vista de texto, este escucha de clics funciona:
la vista de texto se declara así (asistente predeterminado):
y en el archivo strings.xml
fuente
Aunque puede resolver el problema configurando el oyente en la vista de texto, se recomienda no hacerlo. Debe usar el botón plano, ya que es una subclase de Button y proporciona muchos atributos que TextView no tiene.
Para usar el botón plano, agregue el
style="?android:attr/borderlessButtonStyle"
atributo -fuente
en textView
También debe implementar View.OnClickListener y en el método On Click puede usar intento
Probé esta solución funciona bien.
fuente
Para hacer clic en una parte del texto (no el todo
TextView
), puede usarHtml
oLinkify
(ambos crean enlaces que abren URL, sin embargo, no una devolución de llamada en la aplicación).Linkify
Use un recurso de cadena como:
Luego en una vista de texto:
Html
Utilizando
Html.fromHtml
:Luego, en su vista de texto:
fuente
Puede usar TextWatcher para TextView, es más flexible que ClickLinstener (no mejor o peor, solo más de una manera).
fuente