Encontré este gran hilo que describe cómo "comer el pastel y tenerlo también", es decir, usar la imagen en Button
lugar de ImageButton
(que no permite SetText()
, cambiar el tamaño, etc.).
Esto se logra utilizando el atributo Ver:
android:background="@drawable/bgimage"
El único problema con esto es que estira la imagen para que se ajuste al tamaño del botón.
Aparte de codificar de forma rígida un tamaño de botón fijo (¡en píxeles!), ¿Hay alguna manera de decirle a Android que no estire la imagen de fondo en absoluto y que la recorte o la rellene?
fuente
ImageView
parece interesante. Me di cuenta de que tiene un atributo que no está enButton
:android:cropToPadding
. No me importa usar un ImageView en su lugar, siempre que lo haya hechosetOnClickListener()
, lo que hace. ¿Qué perderé al cambiar deButton
aImageView
?setDrawableResource
y luego asegurarse de quesetAdjustViewBounds
esté configurado como verdaderoPuede crear un mapa de bits xml y usarlo como fondo para la vista. Para evitar el estiramiento, puede especificar un
android:gravity
atributo.por ejemplo:
Hay muchas opciones que puede utilizar para personalizar la representación de la imagen.
http://developer.android.com/guide/topics/resources/drawable-resource.html#Bitmap
fuente
Simplemente usar en
ImageButton
lugar deButton
solucionar el problema.y puedes configurar
para eliminar el fondo del botón si lo desea.
Arreglo rapido !! :-)
fuente
Estoy usando un ImageView en un RelativeLayout que se superpone con mi diseño normal. No se requiere código. Ajusta el tamaño de la imagen a la altura completa de la pantalla (o cualquier otro diseño que use) y luego recorta la imagen hacia la izquierda y hacia la derecha para que se ajuste al ancho. En mi caso, si el usuario gira la pantalla, la imagen puede ser un poquito demasiado pequeña. Por lo tanto, uso match_parent, que hará que la imagen se estire en ancho si es demasiado pequeña.
fuente
Tuve el mismo problema: solo debes usar una imagen de 9 parches (.9.png) en lugar de tu imagen original.
Sarga
fuente
Use draw9patch ... incluido dentro de las herramientas SDK de Android Studio. Puede definir las áreas extensibles de su imagen. Las partes importantes están restringidas y la imagen no parece del todo deformada. Una buena demostración de dra9patch está AQUÍ
Use draw9patch para cambiar su splash.png existente a new_splash.9.png, arrastre new_splash.9.png a la carpeta del proyecto drawable-hdpi y asegúrese de que AndroidManifest y styles.xml sean correctos como se muestra a continuación:
AndroidManifest.xml:
styles.xml:
fuente
Tenía una imagen de fondo, no de gran tamaño, pero con dimensiones extrañas, por lo tanto, el estiramiento y el mal rendimiento. Hice un método con los parámetros Contexto, una Vista y un ID dibujable (int) que coincidirá con el tamaño de la pantalla del dispositivo. Use esto, por ejemplo, en Fragments onCreateView para establecer el fondo.
fuente
Aquí hay una versión de la respuesta de Santosh para botones creados mediante programación, sin la necesidad de una configuración XML separada:
Incluí la línea ColorFilter ya que funciona de manera un poco diferente a los botones con una imagen de fondo normal.
fuente
Puede usar a
FrameLayout
con aImageView
como primer hijo, luego su diseño normal como segundo hijo:fuente
La clave es establecer el dibujable como la imagen del botón, no como fondo. Me gusta esto:
fuente
¿Se puede usar un ImageView simple en su xml y hacer que se pueda hacer clic (android: clickable = "true")? Solo tienes que usar como src una imagen que tenga la forma de un botón, es decir, esquinas redondeadas.
fuente