Estoy tratando de tener una imagen (como fondo) en un botón y agregar dinámicamente, dependiendo de lo que ocurra durante el tiempo de ejecución, algo de texto sobre / sobre la imagen.
Si lo uso ImageButton, ni siquiera tengo la posibilidad de agregar texto. Si lo uso Button, puedo agregar texto pero solo definir una imagen con android:drawableBottomatributos XML similares a los definidos aquí .
Sin embargo, estos atributos solo combinan texto e imagen en dimensiones x e 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 Buttono ImageButtonanular el draw()método-. Pero con mi nivel actual de conocimiento, realmente no sé cómo hacer esto (renderizado 2D). ¿Quizás alguien con más experiencia conoce una solución o al menos algunos consejos para comenzar?

Respuestas:
Puede llamar
setBackground()a aButtonpara establecer el fondo del botón.Cualquier texto aparecerá sobre el fondo.
Si está buscando algo similar en xml hay:
android:backgroundatributo que funciona de la misma manera.fuente
Para los usuarios que solo desean poner Fondo, Imagen de icono y Texto en uno
Buttonde diferentes archivos: Establecer en unButtonfondo, dibujable Superior / Inferior / Derecho / Izquierdo y atributos de relleno .Para un arreglo más sofisticado, también puede usar
RelativeLayout(o cualquier otro diseño) y hacer clic en él.Tutorial: Gran tutorial que cubre ambos casos: http://izvornikod.com/Blog/tabid/82/EntryId/8/Creating-Android-button-with-image-and-text-using-relative-layout.aspx
fuente
b.setCompoundDrawablesWithIntrinsicBound(null,R.drawable.home_icon_test,null,null)lugar deandroid:drawableTopy enb.setPadding(0,32,0,0)lugar deandroid:paddingTop.Hay una solución mucho mejor para este problema.
Simplemente tome una normalidad
Buttony usedrawableLeftlosgravityatributos y.De esta forma, obtienes un botón que muestra un icono en el lado izquierdo del botón y el texto en el sitio derecho del icono centrado verticalmente .
fuente
fuente
Solo use un LinearLayout y pretenda que es una
Buttonconfiguración : la clave es hacer clicbackgroundy hacer clicfuente
android:onClicka su punto de vistasolo reemplace
con
izz un muy buen truco ..;)
fuente
Tomé un enfoque diferente de los que se indican aquí, y está funcionando muy 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 "pasos fáciles" a continuación:
I. Cree sus 9 parches usando al menos 3 archivos PNG diferentes y la herramienta que tiene 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, descargue o cree un icono PNG 24x24.
ic_your_icon.png
Guarde todo en la carpeta dibujable / en su proyecto de Android.
II Cree un archivo XML llamado button_selector.xml en su proyecto en la carpeta / dibujable. Los estados deberían ser así:
III. Vaya a la carpeta valores / y abra o cree el archivo styles.xml y cree el siguiente código XML:
ButtonNormalTextWithIcon es un "estilo secundario" porque está extendiendo ButtonNormalText (el "estilo principal").
Tenga en cuenta que al cambiar drawableLeft en el estilo ButtonNormalTextWithIcon a 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 al hacerlo de esta manera, puede administrar el tamaño del texto del botón por separado del icono que desea mostrar y usar el mismo fondo dibujable para varios botones con diferentes iconos respetando las Directrices de la interfaz de usuario de Android usando 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 aplicar el "estilo secundario" con el ícono solo donde lo necesite.
fuente
fuente
Puede usar
drawableTop(tambiéndrawableLeft, etc.) para la imagen y establecer el texto debajo de la imagen agregando elgravityleft|center_verticalfuente
Actualización importante
Para vector dibujable
Si está utilizando vectores dibujables, entonces debe
Fue lanzado en versión
1.1.0-alpha01, por lo que la versión de appcompat debería ser al menos1.1.0-alpha01. La última versión actual es1.1.0-alpha02, use las últimas versiones para una mejor confiabilidad, vea las notas de la versión - enlace .Usar
AppCompatTextView/AppCompatButton/AppCompatEditTextapp:drawableLeftCompat,app:drawableTopCompat,app:drawableRightCompat,app:drawableBottomCompat,app:drawableStartCompatyapp:drawableEndCompatPara dibujable regular
Si no necesita un vector dibujable, entonces puede
android:drawableLeft,android:drawableRight,android:drawableBottom,android:drawableTopTextView,ButtonyEditTextoAppCompatclases.Puede lograr la salida como a continuación:
fuente
xmlns:app="http://schemas.android.com/apk/res-auto"espacio de nombres y no veo esas cosas compatibles con la aplicación.For vector drawablepunto nuevamente.Probablemente mi solución se adapte a muchos usuarios, eso espero.
Lo que estoy sugiriendo es hacer TextView con tu estilo. Me funciona perfectamente y tiene todas las funciones, como un botón.
En primer lugar, hagamos un estilo de botón, que puede usar en todas partes ... Estoy creando button_with_hover.xml
En segundo lugar, vamos a 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
fuente
http://www.mokasocial.com/2010/04/create-a-button-with-an-image-and-text-android/
fuente
Este código me funciona perfectamente
fuente
Puedes usar esto:
en el que he puesto una imagen
backgroundy también he añadido texto ..!fuente
O puedes programáticamente:
fuente
fuente