2012-05-01 17 views
10

Tengo un pequeño ImageButton de Android en una pantalla que representa un ícono. El problema es que es difícil de tocar y activar. No quiero aumentar el tamaño de la imagen en sí, pero me gustaría expandirla y ampliarla, de modo que si el usuario está lo suficientemente cerca de la imagen, activará el evento onClick. ¿Cómo se puede hacer esto sin implementar eventos onTouch para el área de la pantalla circundante?Android ImageButton ¿cómo tener un área seleccionable que es más grande que la imagen en sí?

Respuesta

16

Puede envolver su ImageButton en otro ViewGroup y configurar el relleno en el ViewGroup. Luego, escucharía los clics en el ViewGroup. He aquí un ejemplo:

<FrameLayout 
    android:id="@+id/button_layout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="20dp" > 

    <ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/my_button" 
     android:duplicateParentState="true" 
     android:clickable="false" 
     android:focusable="false" /> 

</FrameLayout> 

A continuación, escuchar clics en R.id.button_layout, y su ImageButton debe recibir todos los mismos estados (pulsado, se hace clic, etc.) como la disposición de los padres.

+0

Intenté agregar relleno a la izquierda de 20-50 chapuzón, pero Parece que esto no funciona. –

+0

¿La idea es simplemente establecer padding = "20dip" en lugar de paddingRight, paddingLeft, etc.? –

+0

Esta sería quizás la técnica más rápida si funciona, pero aún no he podido verificarla. –

0

Tuve una situación similar ... Acabo de colocar el icono usando una disposición relativa, y luego coloqué un botón más grande directamente sobre la parte superior que utilizaba un dibujante que es completamente transparente en estado normal, y agrega color translúcido para presionado/centrado/etc.

+0

¿cómo se especifica el color translúcido? –

+0

Dibujé los iconos (el estado normal es un cuadrado en blanco sin color o alfa, por supuesto) y se hace referencia a todo a través de un xml dibujable, configurando el botón dibujable al xml. no solo hice esto para hacer que el botón fuera más grande que la imagen, sino que me permitió usar una imagen estática del sistema para un ícono de teléfono para mantener las cosas uniformes en cada dispositivo por separado –

+0

ver aquí: http://developer.android.com /resources/tutorials/views/hello-formstuff.html –

0

No estoy seguro de cómo está configurado nuestro diseño, pero una cosa que me viene a la mente es utilizar un diseño relativo. Crea tu ícono con un gran fondo transparente. Deberá manipular el diseño para ubicarlo correctamente, pero también se podrá hacer clic en el área transparente.

Cuestiones relacionadas