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
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.
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.
¿cómo se especifica el color translúcido? –
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 –
ver aquí: http://developer.android.com /resources/tutorials/views/hello-formstuff.html –
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.
- 1. Cómo tener lista desplegable de JComboBox que es más ancha que JComboBox en sí
- 2. Android: ¿Cómo reducir el área seleccionable de View?
- 3. ¿Qué es más grande que un doble?
- 4. ¿Expandir el área seleccionable de un ImageView usando el relleno?
- 5. BitmapFactory devuelve una imagen más grande que la fuente
- 6. Agregue una superposición transparente más grande para aumentar el área seleccionable, sin cambiar el diseño
- 7. Android Imagebutton cambiar imagen OnClick
- 8. Android: ¿Cómo evitar que la imagen se escale en ImageView o ImageButton?
- 9. Android: imagen diferente para reiniciar en ImageButton
- 10. ImageButton en Android
- 11. DialogBoxIndirect crea un diálogo más grande que
- 12. Ajusta la imagen grande en una pequeña imagen con la misma calidad que la imagen original?
- 13. Imagebutton imagen completa, esquinas redondeadas
- 14. Android Establecer ImageButton como Alternar
- 15. ¿por qué este contenedor es más grande de lo necesario para envolver la imagen que contiene?
- 16. ¿Cuál es la cuerda más larga que puedo tener?
- 17. ImageButton usando Transiciones en Android
- 18. ¿Por qué el tamaño del mapa de bits es más grande en la memoria que en el disco en Android?
- 19. Cómo hacer que un C++ EXE sea más grande (artificialmente)
- 20. Cómo hacer que la declaración if grande sea más legible
- 21. ¿Cómo hacer que Canvas dibuje el área transparente en Android?
- 22. Imagen más grande para el primer elemento de gridview android
- 23. ¿Una función es más grande que una matriz?
- 24. Índice de MySQL es más grande que los datos almacenados
- 25. ¿Por qué "hg push" es mucho más grande que .hg?
- 26. Objeto de imagen seleccionable
- 27. ¿Cómo crear una vista que sea más grande que la pantalla?
- 28. ¿Cómo hacer que div se fije en altura pero crece si el contenido es más grande que la altura?
- 29. imagen en la que se puede hacer clic - android
- 30. ¿Por qué un elemento de nivel de bloque es más alto que la imagen que contiene?
Intenté agregar relleno a la izquierda de 20-50 chapuzón, pero Parece que esto no funciona. –
¿La idea es simplemente establecer padding = "20dip" en lugar de paddingRight, paddingLeft, etc.? –
Esta sería quizás la técnica más rápida si funciona, pero aún no he podido verificarla. –