Implementar onClick sólo para un compuesto TextView dibujable

Necesito tener algún texto con un dibujable a la izquierda y quiero ejecutar algún código cuando el usuario hace clic / toca la imagen (sólo la imagen, no el texto), así que utilicé un LinearLayout con un TextView y un ImageView que es Clickable y lanza un evento onClick. El analizador XML me sugiere que reemplace esto con un TextView con un compuesto dibujable , que dibujaría lo mismo con menos líneas de XML . Mi pregunta es "¿Puedo especificar que quiero manejar un evento onClick sólo en el dibujable de la TextView y no en el TextView en sí He visto algunas soluciones que implica escribir su propia extensión de TextView , pero sólo estoy interesado en poder hacerlo dentro del recurso de diseño, si es posible, de lo contrario voy a mantener lo siguiente Código XML :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="bottom" android:paddingTop="10dp" android:paddingLeft="10dp" android:paddingRight="10dp" android:text="@string/home_feedback_title" android:textColor="@android:color/primary_text_dark" android:textStyle="bold" android:paddingBottom="4dp"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/action_feedback" android:clickable="true" android:onClick="onClickFeedback" android:contentDescription="@string/action_feedback_description"/> </LinearLayout> 

Puedes ir de cualquier manera. El uso del compuesto es más rápido aunque se diseñó para ser una optimización. Utiliza menos memoria ram porque reduce 3 vistas en 1 y su diseño más rápido porque pierde 1 profundidad.

Si yo fuera tú me gustaría considerar retroceder para ver si tanto el texto como la imagen interceptar el tacto para hacer cualquier acción es posiblemente una buena cosa. En general, tener una región táctil más grande facilita la presión. Algunos usuarios pueden estar inclinados a tocar el texto en lugar de la imagen.

Por último, si usted va a esa ruta de la fusión de la 2 es posible que desee considerar el uso de un Button lugar de un TextView . Puede estilo el botón para no tener el rectángulo alrededor de él. Lo llaman un botón sin bordes. Es agradable porque obtiene retroalimentación visual que hizo clic en un elemento que se puede TextView ya que como ImageView o TextView normalmente no se pueden realizar acciones.

Cómo crear botones sin bordes en Android

Es muy sencillo. Digamos que usted tiene un dibujable en el lado izquierdo de su TextView 'txtview'. A continuación le hará el truco.

 TextView txtview = (TextView) findViewById(R.id.txtview); txtview.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP) { if(event.getRawX() <= txtview.getTotalPaddingLeft()) { // your action for drawable click event return true; } } return true; } }); 

Si desea que la opción if cambie a la derecha, haga la declaración if a:

 if(event.getRawX() >= txtview.getRight() - txtview.getTotalPaddingRight()) 

Del mismo modo, usted puede hacerlo para todos los drawables compuestos.

 txtview.getTotalPaddingTop(); txtview.getTotalPaddingBottom(); 

Esta llamada de método devuelve todo el relleno en ese lado incluyendo cualquier drawable. Puede usar esto incluso para TextView, Botón, etc.

Haga clic aquí para consultar el sitio de desarrolladores de android.

  • Android.os.FileUriExposedException: file.jpg expuesto más allá de la aplicación a través de ClipData.Item.getUri ()
  • Android: OnClick para el encabezado del cajón de navegación no funciona
  • Vistas superpuestas de Android y OnClick
  • Phonegap 2.4.0 con Android 4.2 - comportamiento de doble clic extraño
  • Android- multi onClick escucha en un botón
  • Android: No se puede obtener un encabezado / pie de lista ListView que se puede hacer clic
  • Android Múltiples secuencias de clics en textview
  • Cómo obtener OnClick () de los botones agregados mediante programación?
  • Android se congela cuando hay una NullPointerException en OnClickListener.onClick (otras tareas no se pueden iniciar)
  • Eventos de ruta / burbuja de Android porque un control está consumiendo el evento onClick
  • ¿Cómo puedo inhabilitar todos los eventos táctiles en todos los niños de un ViewGroup?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.