Agradecemos tu apoyo para compartir nuestros ensayos en referencia a las ciencias informáticas.
Solución:
Prueba de esta manera:
next.setOnTouchListener(object : View.OnTouchListener
override fun onTouch(v: View?, event: MotionEvent?): Boolean
when (event?.action)
MotionEvent.ACTION_DOWN -> //Do Something
return v?.onTouchEvent(event) ?: true
)
Bien, resolví mi propio problema anulando el oyente de OnTouch.
override fun onTouch(view: View, motionEvent: MotionEvent): Boolean
when (view)
next ->
Log.d("next", "yeyy")
when (motionEvent.action)
MotionEvent.ACTION_DOWN ->
val icon: Drawable = ContextCompat.getDrawable(activity.applicationContext, R.drawable.layer_bt_next)
icon.setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY)
next.setImageDrawable(icon)
MotionEvent.ACTION_UP ->
view.performClick()
next.setImageResource(R.drawable.layer_bt_next)
previous ->
//ingredients here XD
return true
Y de esa manera, puedo llamar a onTouch único e implementarlo en muchos botones y también puedo usar onClick by:
view.performClick()
No olvides implementar:
View.OnTouchListener
Y configura el oyente:
next.setOnTouchListener(this)
previous.setOnTouchListener(this)
No creo que su solución realmente resuelva el problema presentado por la advertencia. La advertencia indica que ciertas funciones de accesibilidad utilizan performClick()
para activar botones. Si miras en el View
clase, la performClick()
funciones llama a la onClickListener
directamente, es decir, el código en el onTouchListener
no se ejecutará (next.setImageResource(R.drawable.layer_bt_next)
) para estas funciones de accesibilidad, ya que la vista nunca se tocará físicamente y, por lo tanto, su onTouch
el código no se ejecutará. Tienes que hacer uno de estos:
- Subclase la vista que está configurando
onTouchListener
encendido y anulaciónperformClick
para ejecutar el código, o - Establecer un
onClickListener
en la vista que ejecuta el código.
Podrías simplemente implementar onClickListener
en su clase onTouchListener y llame manualmente onClick()
de tu onTouchListener
(donde tienes view.performClick()
ahora), y luego mueva su código ejecutable a la onClick
anular. También tendría que configurar AMBOS onTouchListener
y onClickListener
en tus puntos de vista.
Reseñas y valoraciones de la guía
Si te ha resultado de provecho nuestro artículo, agradeceríamos que lo compartas con otros seniors y nos ayudes a difundir esta información.