studio programacion móviles letra desarrollo curso color cambiar bar aplicaciones android button colors background status

programacion - curso android desarrollo de aplicaciones móviles pdf



Android: cambie el texto del botón y el color de fondo (6)

Aquí hay un ejemplo de un dibujable que será blanco por defecto, negro cuando se lo presione:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape> <solid android:color="#1E669B"/> <stroke android:width="2dp" android:color="#1B5E91"/> <corners android:radius="6dp"/> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp"/> </shape> </item> <item> <shape> <gradient android:angle="270" android:endColor="#1E669B" android:startColor="#1E669B"/> <stroke android:width="4dp" android:color="#1B5E91"/> <corners android:radius="7dp"/> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp"/> </shape> </item> </selector>

¿Cómo puedo cambiar el texto y los colores de fondo cuando se presiona mi botón, con xml?

Para cambiar el color del texto, puedo hacer lo siguiente:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="mycolor"/> <item android:color="mycolor2/> </selector>

Para cambiar el fondo que puedo hacer (usándolo en un selector / elemento con referencia dibujable):

<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FF0079FF" /> </shape>

¿Pero cómo puedo hacer las dos cosas? Digamos que quiero tener:

  • Predeterminado: texto negro / fondo blanco
  • Presionado: texto blanco / fondo azul

EDITAR: respuesta

Totalmente olvidé que el fondo y el color del texto se administran por separado, así que así es como lo hice:

<Button android:textColor="@color/filtersbuttoncolors" android:background="@drawable/mybackgroundcolors" />

En mybackgroundcolors.xml administro el fondo y en filtersbuttoncolors.xml administro el color del texto. En ambos archivos xml administro el estado (presionado, seleccionado, predeterminado)


Creo que hacerlo de esta manera es mucho más simple:

button.setBackgroundColor(Color.BLACK);

Y necesita import android.graphics.Color; no: import android.R.color;

O simplemente puede escribir el código hexadecimal de 4 bytes (no de 3 bytes) 0xFF000000 donde el primer byte está configurando el alfa.


Cuando creas una aplicación, se creará un archivo llamado styles.xml en tu carpeta res / values. Si cambia los estilos, puede cambiar el fondo, el color del texto, etc. para todos sus diseños. De esta forma, no tiene que entrar en cada diseño individual y cambiarlo manualmente.

styles.xml:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="Theme.AppBaseTheme" parent="@android:style/Theme.Light"> <item name="android:editTextColor">#295055</item> <item name="android:textColorPrimary">#295055</item> <item name="android:textColorSecondary">#295055</item> <item name="android:textColorTertiary">#295055</item> <item name="android:textColorPrimaryInverse">#295055</item> <item name="android:textColorSecondaryInverse">#295055</item> <item name="android:textColorTertiaryInverse">#295055</item> <item name="android:windowBackground">@drawable/custom_background</item> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> </style>

parent="@android:style/Theme.Light" son los colores nativos de Google. Aquí hay una referencia de cuáles son los estilos nativos: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml

name="Theme.AppBaseTheme" significa que está creando un estilo que hereda todos los estilos de parent="@android:style/Theme.Light" . Esta parte puede ignorar a menos que desee heredar de AppBaseTheme nuevamente. = <style name="AppTheme" parent="AppBaseTheme">

@ drawable / custom_background es una imagen personalizada que coloqué en la carpeta del dibujo. Es una imagen png de 300x300.

# 295055 es un color azul oscuro.

Mi código cambia el fondo y el color del texto. Para el texto del Botón, mira a través de las páginas originales de Google (el enlace que te di más arriba).

Luego, en el Manifiesto de Android, recuerda incluir el código:

<application android:theme="@style/Theme.AppBaseTheme">


Desde API nivel 21 puedes usar:

android:backgroundTint="@android:color/white"

solo tienes que agregar esto en tu xml


Solo complementando la respuesta de @ Jonsmoke.

Para API nivel 21 y superior, puede usar:

android:backgroundTint="@android:color/white"

en XML para el diseño del botón.

Para nivel de API inferior a 21, use un AppCompatButton usando el espacio de nombres de la aplicación en lugar de android para backgroundTint .

Por ejemplo:

<android.support.v7.widget.AppCompatButton android:id="@+id/my_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="My Button" app:backgroundTint="@android:color/white" />


agregue la línea siguiente en styles.xml

<style name="AppTheme.Gray" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorButtonNormal">@color/colorGray</item> </style>

en el botón, agregue android:theme="@style/AppTheme.Gray" , ejemplo:

<Button android:theme="@style/AppTheme.Gray" android:textColor="@color/colorWhite" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@android:string/cancel"/>