Cómo eliminar el fondo de ImagePack en Android, pero sigo haciendo clic en Resaltar

Tengo algunos ImageButtons en mi aplicación y I'v eliminado el fondo gris predeterminado con

android:background="@android:color/transparent" o android:background="@null"

El problema es que también elimina el fondo onClick highlight (naranja en API8 y azul en API16)

I'v leer tantas preguntas y respuestas aquí, la gente está sugiriendo utilizar el selector lugar de hacer otra imagen para cada uno de los botones, me gustaría tener un fondo de color sólo resaltar. ¿Hay una manera simple de lograr esto?

solución: programaticamente

  import android.view.View;
 import android.view.View.OnTouchListener;

 // ...

 btn.setOnTouchListener (nuevo OnTouchListener () {
     @Anular
     Public boolean onTouch (Ver v, evento MotionEvent) {
         if (event.getAction () == (MotionEvent.ACTION_DOWN)) {
             // establecer el color de resaltado de fondo
             btn.setBackgroundResource (R.color.blue);
         }
         if (event.getAction () == (MotionEvent.ACTION_UP)) {
             // restaura transparente
             btn.setBackgroundResource (
                 getResources (). getColor (android.R.color.transparent));
         }
         falso retorno;
     }
 });

No es tan simple, pero hace el trabajo y me ahorra mucho tiempo haciendo otra imagen para cada botón, mientras que realmente no necesita estilos onclick de lujo.

4 Solutions collect form web for “Cómo eliminar el fondo de ImagePack en Android, pero sigo haciendo clic en Resaltar”

Realmente necesitas usar un selector para esto.

Puede utilizar colores para sus fondos en sus selectores, no necesita ser un recurso PNG (sólo tiene que establecer el fondo en un color, en lugar de un recurso dibujable).

Colocarás este código en tu carpeta dibujable, con un nombre específico (como button_sel.xml).

Entonces usted fija esto como el fondo a su botón en su XML que parecería esto:

 android:background="@drawable/button_sel" 

El selector se vería así:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/ab_background" android:state_focused="true" android:state_pressed="true"/> <item android:drawable="@color/ab_background" android:state_focused="false" android:state_pressed="true"/> <item android:drawable="@color/ab_background_on" android:state_focused="true" android:state_pressed="false"/> <item android:drawable="@color/ab_background_on" android:state_focused="false" android:state_pressed="false"/> </selector> 

Sólo hay dos atributos relevantes en este caso: background y src . Si desea utilizar el mismo fondo para todos los botones de imagen (con resaltado de color), debe agregar la parte de fondo que cambia de botón a botón a su imagen definida por src , que no es demasiado limpio y limpio (pero por supuesto usted puede hacer eso si usted quiere).

Así que creo que lo mejor aquí es usar selectores para el fondo, como lo sugieren muchos usuarios.

utilice el código siguiente:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/holo_blue_light" android:state_pressed="true"/> <item android:drawable="@android:color/transparent"/> </selector> 

No lo pienses así, puedes buscar a través de la API para encontrar el selector predefinido para ImageButton, que copiar el código y alterar el selector de la manera que lo necesites. Por lo tanto, crearía un ImageButton personalizado.

Pero no creo que haya una manera fácil, al igual que lo quería con sólo cambiar un color

Estoy teniendo el mismo problema, pero ahora se ha resuelto. Si está utilizando "android: background =" @ null "resultará de ningún fondo en absoluto y ninguna animación presionada por el botón aparecerá para el usuario.

Simplemente agregando esta línea de código para hacer que un botón de imagen se vuelva intermitente al hacer clic. Esta es la forma correcta de alertar al usuario de que se ha hecho clic en un botón de imagen.

  **"android:background="?android:selectableItemBackground"** 
  • Eliminar un detector de onclick
  • Bloqueo de onClick de Android enFling
  • Android MediaPlayer Singleton
  • ¿Hay una manera de simular un clic en la pantalla en el dispositivo Android a través de código?
  • ¿Por qué no AsyncTasks siempre funcionan dentro de un onClickListener?
  • Evento onClick no está desencadenando | Androide
  • No se pudo encontrar un método onClick (View) en la actividad
  • Diferencia entre onSingleTapConfirmed y onSingleTapUp
  • Cómo obtener el identificador de elemento en un controlador onItemClick
  • ListView expandir animación para elementos sólo funciona después del segundo clic
  • Cómo acceder al botón dentro de "incluir" el diseño
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.