studio programacion herramientas fundamentos con avanzado aplicaciones android button

programacion - manual de android en pdf



Color de fondo del botón Android (9)

Estoy tratando de establecer el color de fondo de un botón en mi aplicación y no puedo lograr el resultado que quiero ...

El color que intento establecer es holo_green_light(#ff99cc00) . Para hacerlo, estoy usando setColorFilter(0xff99cc00, PorterDuff.Mode.MULTIPLY);

El color que obtengo no es el holo_green_light sino una mezcla de lightgrey y holo_green_light .

He intentado usar LightingColorFilter sin mucho éxito.

¿Hay alguna manera de hacerlo programáticamente, para que el botón aparezca como un botón y no como un rectángulo plano con el color que necesito?


¿Por qué no usar simplemente setBackgroundColor(getResources().getColor(R.color.holo_light_green)) ?

Editar: si quieres tener algo que se parece más a un botón de Android, vas a querer crear un degradado y establecerlo como fondo. Para un ejemplo de esto, puedes ver esta pregunta .


Además de la respuesta de Mark Proctor:

Si desea mantener el estilo predeterminado, pero tiene una coloración condicional en el botón, simplemente configure la propiedad backgroundTint manera:

android:backgroundTint="@drawable/styles_mybutton"

Cree el archivo asociado /res/drawable/styles_mybutton.xml, luego use la siguiente plantilla y cambie los colores según sus gustos:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Disabled state--> <item android:state_enabled="false" android:color="@android:color/white"> </item> <!-- Default state--> <item android:color="#cfc"> </item> </selector>


Crea /res/drawable/button.xml con el siguiente contenido:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp"> <!-- you can use any color you want I used here gray color--> <solid android:color="#90EE90"/> <corners android:bottomRightRadius="3dp" android:bottomLeftRadius="3dp" android:topLeftRadius="3dp" android:topRightRadius="3dp"/> </shape>

Y luego puedes usar lo siguiente:

<Button android:id="@+id/button_save_prefs" android:text="@string/save" android:background="@drawable/button"/>


Esta es mi manera de hacer un botón personalizado con un color diferente.

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <stroke android:width="3dp" android:color="#80FFFFFF" /> <corners android:radius="25dp" /> <gradient android:angle="270" android:centerColor="#90150517" android:endColor="#90150517" android:startColor="#90150517" /> </shape>

De esta forma lo configuras como fondo.

<Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:layout_marginBottom="25dp" android:layout_centerInParent="true" android:background="@drawable/button"/>


Los botones son más complejos que simplemente cambiar un color ...

Los botones de Android se fabrican usando bastantes 9 parches y estados dibujables. Deberías echarle un vistazo a los Holo Colors de Android para generarlos, querrás seleccionar "Color Button" y generará las imágenes y xml necesarios para ti ...


Para mantener el estilo, use:

int color = Color.parseColor("#99cc00"); button.getBackground().mutate().setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC));


Si desea mantener el estilo general (esquinas redondeadas, etc.) y simplemente cambiar el color de fondo, entonces uso la propiedad backgroundTint

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


Si no le molesta codificarlo, puede hacer esto ~> android: background = "# eeeeee" y soltar cualquier número de color hexadecimal que desee.

Se ve como esto....

<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/textView1" android:text="@string/ClickMe" android:background="#fff"/>


no es necesario ser tan duro intente esto:

YourButtonObject.setBackground(0xff99cc00) ;