El botón se escala a la imagen de fondo en lugar del contenido

Lo que tengo que hacer es tener la imagen de fondo sólo llenar el tamaño natural del botón, como cuando no se especifica el fondo y se muestra la imagen de fondo gris por defecto. Pero en cambio, mi botón se escala hasta el tamaño de la imagen de fondo en lugar del texto.

Había una pregunta anterior, pero nadie tenía una solución.

El botón:

Introduzca aquí la descripción de la imagen

<Button android:id="@+id/morebtn" style="@style/CustomButton" android:text="More" /> 

Tengo este estilo del botón de encargo (el greybutton es un 9-remiendo):

 <resources> <style name="CustomButton" parent="@android:style/TextAppearance"> <item name="android:textColor">#FFFFFF</item> <item name="android:layout_marginLeft">10dip</item> <item name="android:layout_marginRight">10dip</item> <item name="android:layout_marginBottom">10dip</item> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_centerInParent">true</item> <item name="android:background">@drawable/greybutton</item> <item name="android:textSize">20sp</item> </style> </resources> 

Ahora llena la pantalla a lo ancho, a pesar de que se le dice a wrap_content. Cuando elimino android: el fondo del estilo del botón, el botón encoge para envolver el texto según lo esperado.

¿Alguien ve por qué mi imagen de fondo no se está comportando como el fondo del botón predeterminado?

¿Por qué no utiliza ImageButton en su lugar:

 <ImageButton android:src="@drawable/greybutton" android:scaleType="fitCenter" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

Entonces puede ajustar la escala con el atributo scaleType . El único inconveniente es que no se puede establecer ningún texto.

Maldición. Tenía un hdpi dibujable que no había sido convertido a 9patch, y por alguna razón que se estaba aplicando en lugar de uno en la carpeta mdpi drawables incluso en mi pantalla mdpi. La escala de fondo realmente funciona como se esperaba después de todo. ¡Lo siento!

(Por lo tanto, si está navegando en esta pregunta con un problema similar, compruebe su carpeta desplegable para asegurarse de que dibuja lo que cree que es. También: puede desear estar seguro de que los límites de contenido en su parche de nueve son apropiados Tenga en cuenta que no son los mismos que los límites extensibles.)

Usted podría intentar codificar duro la altura y la anchura de los botones usando la inmersión. Eso será un problema si necesita el texto en los botones para cambiar, pero debe trabajar para restringir el botón de expansión al tamaño de la imagen. Por supuesto, una imagen grande hará que el botón sea más grande .. el ancho / altura es wrap_content, y la imagen es claramente parte del contenido … intenta codificar los parámetros width / height.

Agregue estos dos elementos a su estilo de CustomButton

 <item name="android:minWidth">0dp</item> <item name="android:minHeight">0dp</item> 
  • ¿Cómo hacer zoomview scrollview?
  • Android - Eliminar CacheColorHint para ListView
  • ¿Cómo puedo anclar una imagen al centro dentro de una vista de imagen en una vista de desplazamiento, en Android?
  • Cómo cambiar las propiedades del texto y del fondo de la barra de acción?
  • Cambiar el color del borde cuando edittext está enfocado
  • Nuevo error de la biblioteca de diseño de Android con AppBarLayout y barra de herramientas
  • ¿Por qué setWidth no funciona?
  • ¿Calidad de video en android?
  • Ingresar usando Google+ en Parse
  • Fotos de la escala de Android picasso para ser más grande o ajustar el imageView (sin espacio en blanco)
  • Seguir recibiendo eglMakeCurrent Error en el informe EGL_BAD_ALLOC cuando no estamos usando GLSurface en absoluto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.