studio programacion paleta móviles gama fondo desarrollo curso colores color codigos cambiar aplicaciones android android-layout android-xml

paleta - manual de programacion android pdf



Botón de Android con diferentes colores de fondo (4)

Como indica su error, debe definir un atributo dibujable para los elementos (por alguna razón es necesario cuando se trata de definiciones de fondo), así que:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@color/red"/> <!-- pressed --> <item android:state_focused="true" android:drawable="@color/blue"/> <!-- focused --> <item android:drawable="@color/black"/> <!-- default --> </selector>

También tenga en cuenta que el atributo dibujable no acepta valores de color sin procesar, por lo que debe definir los colores como recursos. Crea el archivo colors.xml en la carpeta res / values :

<?xml version="1.0" encoding="utf-8"?> <resources> <color name="black">#000</color> <color name="blue">#00f</color> <color name="red">#f00</color> </resources>

Quiero cambiar el color de fondo de un botón usando un selector-xml-file. Mi enfoque es básicamente el del ejemplo al final de esta página: http://developer.android.com/guide/topics/resources/color-list-resource.html

Tengo un res / color / button_text.xml que se ve así:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="#ffff0000"/> <!-- pressed --> <item android:state_focused="true" android:color="#ff0000ff"/> <!-- focused --> <item android:color="#ff000000"/> <!-- default --> </selector>

y mi diseño contiene el siguiente código:

<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/button_text" **android:background="@color/button_text"** />

(** solo está ahí para mostrarte que uso android: background en lugar de android: textcolor)

este código falla. dice "La etiqueta de la línea 4 del archivo XML binario requiere un atributo ''dibujable'' o una etiqueta hija que define dibujable. Pero si lo intento con android: textColor como se describe en el enlace anterior, funciona bien. Por lo tanto, tiene que ser el problema de fondo. no quiero crear un 9patch-png si no es necesario (básicamente, solo necesito un rectángulo "clicable", así que uso un botón con un fondo de color)


Debe colocar el archivo selector.xml en la carpeta drwable. Luego escribe: android:background="@drawable/selector" . Esto cuida los estados presionados y enfocados.


En la URL que apuntó, se usa el button_text.xml para establecer el atributo textColor. Que es la razón por la que tenían el button_text.xml en la carpeta res / color y por lo tanto usaron @ color / button_text.xml

Pero estás tratando de usarlo para el atributo de fondo. El atributo de fondo busca algo en la carpeta res / dibujable.

compruebe que obtuve este botón personalizado del selector de Internet. No tengo el enlace. Pero le agradezco al cartel por esto. Me ayudó a tener esto en la carpeta dibujable.

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <gradient android:startColor="@color/yellow1" android:endColor="@color/yellow2" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item android:state_focused="true" > <shape> <gradient android:endColor="@color/orange4" android:startColor="@color/orange5" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:endColor="@color/white1" android:startColor="@color/white2" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector>

Y lo usé en mi diseño main.xml como este

<Button android:id="@+id/button1" android:layout_alignParentLeft="true" android:layout_marginTop="150dip" android:layout_marginLeft="45dip" android:textSize="7pt" android:layout_height="wrap_content" android:layout_width="230dip" android:text="@string/welcomebtntitle1" android:background="@drawable/custombutton"/>

Espero que esto ayude. Vik está en lo correcto.

EDITAR: Aquí está el colors.xml

<?xml version="1.0" encoding="utf-8"?> <resources> <color name="yellow1">#F9E60E</color> <color name="yellow2">#F9F89D</color> <color name="orange4">#F7BE45</color> <color name="orange5">#F7D896</color> <color name="blue2">#19FCDA</color> <color name="blue25">#D9F7F2</color> <color name="grey05">#ACA899</color> <color name="white1">#FFFFFF</color> <color name="white2">#DDDDDD</color> </resources>


en Mono Android puedes usar un filtro como este:

your_button.Background.SetColorFilter(new Android.Graphics.PorterDuffColorFilter(Android.Graphics.Color.Red, Android.Graphics.PorterDuff.Mode.Multiply));