theme studio para gama combinacion colores color codigos codigo celular black java android android-5.0-lollipop floating-action-button

java - studio - Android cambia el color del botón de acción flotante



gama de colores en android (19)

He intentado durante horas cambiar el color del botón de acción flotante del material, pero sin éxito.

<android.support.design.widget.FloatingActionButton android:id="@+id/profile_edit_fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end|bottom" android:layout_margin="16dp" android:clickable="true" android:src="@drawable/ic_mode_edit_white_24dp" />

He intentado agregar

android:background="@color/mycolor"

o por código

FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.profile_edit_fab); fab.setBackgroundColor(Color.parseColor("#mycolor"));

o

fab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#mycolor")));

Pero ninguno de los anteriores funcionó. También probé las soluciones en la "pregunta duplicada" , pero ninguna de ellas funciona, el botón permaneció verde y también se convirtió en un cuadrado.

Me gustaría una respuesta detallada, gracias.

PD: También sería bueno saber cómo agregar el efecto dominó, tampoco podría entender eso.


Al usar Enlace de datos , puede hacer algo como esto:

android:backgroundTint="@{item.selected ? @color/selected : @color/unselected}"

He hecho un example muy simple


Cambiar el color de fondo del botón de acción flotante utilizando la línea de abajo

app:backgroundTint="@color/blue"

Cambio del color del icono del botón de acción flotante

android:tint="@color/white"


Como se describe en la documentation , por defecto toma el color establecido en el atributo styles.xml colorAccent .

El color de fondo de esta vista por defecto es el colorAccent de su tema. Si desea cambiar esto en tiempo de ejecución, puede hacerlo a través de setBackgroundTintList (ColorStateList).

Si deseas cambiar el color

  • en XML con la aplicación de atributos : backgroundTint

<android.support.design.widget.FloatingActionButton xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_add" app:backgroundTint="@color/orange" app:borderWidth="0dp" app:elevation="6dp" app:fabSize="normal" >

  • en código con .setBackgroundTintList (respuesta a continuación por ywwynm )

Como @Dantalian mencionó en los comentarios, si desea cambiar el color del icono, puede usar

android:tint="@color/white"


Como señaló Vasil Valchev en un comentario, es más simple de lo que parece, pero hay una sutil diferencia que no noté en mi XML.

<android.support.design.widget.FloatingActionButton android:id="@+id/profile_edit_fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end|bottom" android:layout_margin="16dp" android:clickable="true" android:src="@drawable/ic_mode_edit_white_24dp" app:backgroundTint="@android:color/white"/>

Note que es:

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

y no

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


El FAB está coloreado en función de su colorAccent .

<style name="AppTheme" parent="Base.Theme.AppCompat.Light"> <item name="colorAccent">@color/accent</item> </style>


El documento sugiere que toma el @ color / acento por defecto. Pero podemos anularlo en el código usando

fab.setBackgroundTintList(ColorStateList)

También recuerda

La versión mínima de API para usar esta biblioteca es 15, por lo que debe actualizarla. si no quieres hacerlo, ¡debes definir un dibujo personalizado y decorarlo!


El punto que nos falta es que antes de establecer el color en el botón, es importante trabajar en el valor que desea para este color. Entonces puedes ir a valores> color. Encontrará los predeterminados, pero también puede crear colores copiándolos y pegándolos, cambiando los colores y los nombres. Entonces ... cuando vaya a cambiar el color del botón flotante (en activity_main), puede elegir el que ha creado

Ejemplo: código en valores> colores con colores predeterminados + 3 colores más que he creado:

<?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#FF4081</color> <color name="corBotaoFoto">#f52411</color> <color name="corPar">#8e8f93</color> <color name="corImpar">#494848</color> </resources>

Ahora mi botón de acción flotante con el color que he creado y llamado "corPar":

<android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" android:src="@android:drawable/ic_input_add" android:tint="#ffffff" app:backgroundTint="@color/corPar"/>

A mi me funciono. ¡Buena suerte!


Gracias a autocompletar. Tuve suerte después de algunos golpes y pruebas:

xmlns:card_view="http://schemas.android.com/apk/res-auto" card_view:backgroundTint="@color/whicheverColorYouLike"

- o - (ambos son básicamente lo mismo)

xmlns:app="http://schemas.android.com/apk/res-auto" app:backgroundTint="@color/whicheverColorYouLike"

Esto funcionó para mí en API Versión 17 con la biblioteca de diseño 23.1.0.


La respuesta de Vijet Badigannavar es correcta, pero el uso de ColorStateList suele ser complicado y no nos dijo cómo hacerlo. Como a menudo nos enfocamos en cambiar el color de View en estado normal y presionado, voy a agregar más detalles:

  1. Si desea cambiar el color de FAB en estado normal, simplemente puede escribir

    mFab.setBackgroundTintList(ColorStateList.valueOf(your color in int));

  2. Si desea cambiar el color de FAB en estado presionado, gracias por Design Support Library 22.2.1 , puede escribir

    mFab.setRippleColor(your color in int);

    Al establecer este atributo, cuando mantienes presionada la tecla FAB , aparecerá una onda con tu color en tu punto de contacto y se mostrará en toda la superficie de la FAB . Tenga en cuenta que no cambiará el color de FAB en estado normal. Debajo de API 21 (Lollipop), no hay efecto dominó, pero el color de FAB seguirá cambiando cuando lo presione.

Finalmente, si desea implementar un efecto más complejo para los estados, entonces debe profundizar en ColorStateList , aquí hay una pregunta SO que lo discute: ¿Cómo creo ColorStateList mediante programación? .

ACTUALIZACIÓN: Gracias por el comentario de @ Kaitlyn. Para eliminar el trazo de FAB usando backgroundTint como su color, puede configurar la app:borderWidth="0dp" en su xml.


Nuevo mapeo de atributos del tema para el botón de acción flotante en el material 1.1.0

En el tema de tu aplicación:

  • Establezca colorSecondary para establecer un color para el fondo de FAB (se asigna a backgroundTint)
  • Establezca colorOnSecondary para establecer un color para el icono / texto y el color ondulado de FAB (se asigna a tint y rippleColor)

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <!-- ...whatever else you declare in your app theme.. --> <!-- Set colorSecondary to change background of FAB (backgroundTint) --> <item name="colorSecondary">@color/colorSecondary</item> <!-- Customize colorSecondary to change icon/text of FAB (maps to tint and rippleColor) --> <item name="colorOnSecondary">@android:color/white</item> </style>


Otras soluciones pueden funcionar. Este es el enfoque del gorila de 10 libras que tiene la ventaja de ser ampliamente aplicable en este y otros casos similares:

Styles.xml:

<style name="AppTheme.FloatingAccentButtonOverlay" > <item name="colorAccent">@color/colorFloatingActionBarAccent</item> </style>

su diseño xml:

<android.support.design.widget.FloatingActionButton android:theme="AppTheme.FloatingAccentButtonOverlay" ... </android.support.design.widget.FloatingActionButton>


Puede usar este código en caso de que quiera cambiar el color mediante programación

floating.setBackgroundTintList(getResources().getColorStateList(R.color.vermelho));


Si intenta cambiar el color de FAB mediante la aplicación, hay algún problema. El marco del botón tiene un color diferente, así que lo que debe hacer:

app:backgroundTint="@android:color/transparent"

y en código establece el color:

actionButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.white)));


Solo usa,

app:backgroundTint="@color/colorPrimary"

no use

android:backgroundTint="@color/colorPrimary"


Tengo el mismo problema y todo me está arrebatando el pelo. Gracias por esto https://.com/a/35697105/5228412

Lo que podemos hacer..

favourite_fab.setImageDrawable(ContextCompat.getDrawable(getBaseContext(), R.drawable.favourite_selected));

funciona bien para mí y deseo que otros lleguen hasta aquí.


lo hice así android: background = "@ color / colorAccent" solo voy a la carpeta res y luego hago clic en los valores de la carpeta y luego en colors.xml en colors.xml Simplemente cambio el color de colorAccent y lo llamo en android: background y esta hecho


agregue colores en el archivo color.xml y luego agregue esta línea de código ... floatingActionButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.fab2_color)));


<android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" app:elevation="6dp" app:backgroundTint="@color/colorAccent" app:pressedTranslationZ="12dp" android:layout_margin="@dimen/fab_margin" android:src="@drawable/add"/>

Tenga en cuenta que agrega colores en res / values ​​/ color.xml e incluye el atributo en su fab

app:backgroundTint="@color/addedColor"


mFab.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(mContext,R.color.mColor)));