Android: combina texto e imagen en un botón o ImageButton

Intento tener una imagen (como fondo) en un botón y agregar dinámicamente, dependiendo de lo que esté sucediendo durante el tiempo de ejecución, algún texto arriba / sobre la imagen.

Si utilizo ImageButton , ni siquiera tengo la posibilidad de agregar texto. Si uso Button , puedo agregar texto, pero solo definir una imagen con android:drawableBottom y atributos XML similares, tal como se define aquí .

Sin embargo, estos atributos solo combinan texto e imagen en las dimensiones xe y, lo que significa que puedo dibujar una imagen alrededor de mi texto, pero no debajo / debajo de mi texto (con el eje z definido como saliendo de la pantalla).

¿Alguna sugerencia sobre cómo hacer esto? Una idea sería extender Button o ImageButton y anular el método draw() . Pero con mi nivel actual de conocimiento, realmente no sé cómo hacer esto (representación 2D). ¿Tal vez alguien con más experiencia conoce una solución o al menos algunos consejos para comenzar?

Puede llamar a setBackground() en un Button para establecer el fondo del botón.

Cualquier texto aparecerá sobre el fondo.

Si buscas algo similar en xml, existe: android:background atributo de android:background que funciona de la misma manera.

Para los usuarios que solo quieren poner fondo, icono-imagen y texto en un Button de diferentes archivos: establecer en un fondo de Button , DrawableTop / Bottom / Rigth / Left y atributos de relleno .

  

Para una disposición más sofisticada también puede usar RelativeLayout y hacer que se pueda hacer clic.

Tutorial: excelente tutorial que cubre ambos casos: http://izvornikod.com/Blog/tabid/82/EntryId/8/Creating-Android-button-with-image-and-text-using-relative-layout.aspx

Hay una solución mucho mejor para este problema.

Solo toma un Button normal y usa los atributos drawableLeft y drawableLeft .

  

De esta forma, obtienes un botón que muestra un ícono en el lado izquierdo del botón y el texto en el sitio derecho del ícono verticalmente centrado .

enter image description here

   

Simplemente use un LinearLayout y pretenda que es un background configuración de Button y la clave es clicable :

     

simplemente reemplace

 android:background="@drawable/icon" 

con

 android:background="@android:color/transparent" android:drawableTop="@drawable/[your background image here]" 

es un buen truco …;)

Tomé un enfoque diferente de los que se indican aquí, y está funcionando realmente bien, así que quería compartirlo.

Estoy usando un Estilo para crear un botón personalizado con imagen a la izquierda y texto en el centro-derecha. Simplemente siga los 4 “sencillos pasos” a continuación:

I. Crea tus 9 parches usando al menos 3 archivos PNG diferentes y la herramienta que tienes en: /YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch. Después de esto deberías tener:

button_normal.9.png, button_focused.9.png y button_pressed.9.png

Luego descarga o crea un ícono PNG 24×24.

ic_your_icon.png

Guarde todo en la carpeta dibujable de su proyecto Android.

II. Cree un archivo XML llamado button_selector.xml en su proyecto en la carpeta drawable /. Los estados deberían ser así:

    

III. Vaya a la carpeta values ​​/ y abra o cree el archivo styles.xml y cree el siguiente código XML:

   

ButtonNormalTextWithIcon es un “estilo hijo” porque extiende ButtonNormalText (el “estilo principal”).

Tenga en cuenta que al cambiar DrawableLeft en el estilo ButtonNormalTextWithIcon, en drawableRight, drawableTop o drawableBottom puede colocar el icono en otra posición con respecto al texto.

IV. Vaya al diseño / carpeta donde tiene su XML para la interfaz de usuario y vaya al botón donde desea aplicar el estilo y haga que se vea así:

  

¡Y voilá! Tienes tu botón con una imagen en el lado izquierdo.

Para mí, ¡esta es la mejor manera de hacerlo! porque haciéndolo de esta manera, puede administrar el tamaño del texto del botón por separado del icono que desea visualizar y utilizar el mismo fondo dibujable para varios botones con diferentes icons respetando las pautas de interfaz de usuario de Android que usan estilos.

También puede crear un tema para su aplicación y agregarle el “estilo principal” para que todos los botones se vean iguales, y aplique el “estilo infantil” con el ícono solo donde lo necesite.

   

Puede usar drawableTop (también drawableLeft , etc.) para la imagen y establecer el texto debajo de la imagen agregando la gravity left|center_vertical

  

Probablemente mi solución sea adecuada para muchos usuarios, eso espero.

Lo que sugiero es que esté haciendo TextView con tu estilo. Funciona perfectamente para mí y tiene todas las características, como un botón.

Antes que nada, hagamos un estilo de botón, que puede usar en cualquier lugar … Estoy creando button_with_hover.xml

                            

En segundo lugar, permite crear un botón de vista de texto.

   

Y este es un resultado. Luego, diseñe su botón personalizado con cualquier color u otras propiedades y márgenes. Buena suerte

enter image description here

  android:drawableLeft android:drawableRight android:drawableBottom android:drawableTop 

http://www.mokasocial.com/2010/04/create-a-button-with-an-image-and-text-android/

Este código funciona para mí perfectamente

     

Puedes usar esto:

    

en eso he puesto una imagen como background y también he añadido texto …!