Cómo agregar tinte de botón mediante programación

En la nueva librería AppCompat, podemos teñir el botón de esta manera:

<Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/follow" android:id="@+id/button_follow" android:backgroundTint="@color/blue_100" /> 

¿Cómo puedo fijar el tinte del botón programáticamente en mi código? Estoy básicamente tratando de implementar un coloración condicional del botón basado en la entrada de algunos usuarios

7 Solutions collect form web for “Cómo agregar tinte de botón mediante programación”

De acuerdo con la documentación del método relacionado con android:backgroundTint es setBackgroundTintList (lista ColorStateList)

Actualizar

Siga este enlace para saber cómo crear un recurso de lista de colores.

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:color="#your_color_here" /> </selector> 

Luego cargarlo usando

 setBackgroundTintList(contextInstance.getResources().getColorStateList(R.color.your_xml_name)); 

Donde contextInstance es una instancia de un Context


Usando AppCompart

 btnTag.setSupportButtonTintList(ContextCompat.getColorStateList(Activity.this, R.color.colorPrimary)); 

Podrías usar

 button.setBackgroundTintList(ColorStateList.valueOf(resources.getColor(R.id.blue_100))); 

Pero yo recomendaría que utilice una biblioteca de apoyo tintado dibujable que acaba de ser lanzado ayer:

 Drawable drawable = ...; // Wrap the drawable so that future tinting calls work // on pre-v21 devices. Always use the returned drawable. drawable = DrawableCompat.wrap(drawable); // We can now set a tint DrawableCompat.setTint(drawable, Color.RED); // ...or a tint list DrawableCompat.setTintList(drawable, myColorStateList); // ...and a different tint mode DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_OVER); 

Puedes encontrar más información en esta entrada del blog (ver sección "Dibujando el tinte")

¿Has intentado algo como ésto?

 button.setBackgroundTintList(getResources().getColorStateList(R.id.blue_100)); 

Tenga en cuenta que getResources () sólo funcionará en una actividad. Pero también se puede llamar a cada contexto.

Puede utilizar DrawableCompat, por ejemplo

 public static Drawable setTint(Drawable drawable, int color) { final Drawable newDrawable = DrawableCompat.wrap(drawable); DrawableCompat.setTint(newDrawable, color); return newDrawable; } 

Tuve un problema similar. Quise colorear un fondo dibujable complejo para una opinión basada en un valor del color (int). Lo conseguí usando el código:

 ColorStateList csl = new ColorStateList(new int[][]{{}}, new int[]{color}); textView.setBackgroundTintList(csl); 

Donde color es un valor int que representa el color requerido. Esto representa el simple xml ColorStateList:

 <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:color="color here"/> </selector> 

Espero que esto ayude.

Parece que las vistas tiene mecánica propia para la gestión del tinte, por lo mejor se pondrá lista tinte:

 ViewCompat.setBackgroundTintList( editText, ColorStateList.valueOf(errorColor)); 

Utilizar:

 favoriteImageButton.setColorFilter(Color.argb(255, 255, 255, 255)); // White Tint 
  • Cambiar actionOverflowButtonStyle con appcompat v21
  • ¿Cómo crear la barra de herramientas con el botón personalizado a la izquierda?
  • Estilo de diálogo de preferencias de Android
  • Barra de herramientas que no aparece en los dispositivos pre lollipop
  • No se encuentra recurso Theme.AppCompat.Light en Android Studio
  • ActionBar vs Barra de herramientas o barra de herramientas y barra de herramientas
  • Appcompat res values-v21 Los errores de themes_base en eclipse no desaparecen
  • Hacer el ancho de ajuste ImageView de CardView
  • AppCompatv7 Edición de Android 5.0
  • Biblioteca de soporte de Android 24.0.0 no muestra texto en SearchView
  • Problemas de recursos de Android después de actualizar a Xamarin Forms 2.0
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.