He estado tratando de 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 mediante 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 propuesta, pero ninguna de ellas funciona; el botón permaneció verde y también se convirtió en un cuadrado.
PD: También sería bueno saber cómo agregar el efecto dominó, tampoco podría entender eso.
Respuestas:
Como se describe en la documentación , por defecto se toma el conjunto de colores en styles.xml atributo colorAccent .
Si deseas cambiar el color
Como @Dantalian mencionó en los comentarios, si desea cambiar el color del icono de Design Support Library hasta v22 (inclusive) , puede usar
Para la Biblioteca de soporte de diseño desde v23 , puede usar:
También con las
androidX
bibliotecas debe establecer un borde de 0dp en su diseño xml:fuente
La respuesta de Vijet Badigannavar es correcta, pero el uso
ColorStateList
suele ser complicado y no nos dijo cómo hacerlo. Como a menudo nos enfocamos en cambiarView
el color en estado normal y prensado, voy a agregar más detalles:Si desea cambiar
FAB
el color en estado normal, simplemente puede escribirSi desea cambiar
FAB
el color en estado presionado, gracias por Design Support Library 22.2.1 , puede escribirAl 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 deFAB
. Tenga en cuenta que no cambiaráFAB
el color en estado normal. Debajo de API 21 (Lollipop), no hay efecto dominó, peroFAB
el color seguirá cambiando cuando lo presione.Finalmente, si desea implementar un efecto más complejo para los estados, entonces debe profundizar
ColorStateList
, aquí hay una pregunta SO que lo discute: ¿Cómo creo ColorStateList programáticamente? .ACTUALIZACIÓN: Gracias por el comentario de @ Kaitlyn. Para eliminar el trazo de FAB usando backgroundTint como su color, puede configurarlo
app:borderWidth="0dp"
en su xml.fuente
app:borderWidth
programáticamente? GraciasFloatingActionButton
, me temo que no puedes configurarlo programáticamente en este momento ya que no hay configuradormBorderWidth
.Como señaló Vasil Valchev en un comentario, es más simple de lo que parece, pero hay una sutil diferencia que no estaba notando en mi XML.
Note que es:
y no
fuente
android:backgroundTint=""
es del nivel 21 de Api y es parte del diseño de material de Lollipop y se ignorará debajo de Lollipop. Además, no cambia elFAB
color por completo porque no es un color sólido. Tienes que usar elapp:
que lo hace funcionar.android:color
causó que mi aplicación se bloqueara, ¡y me estaba volviendo loco! Gracias por guardar mi aplicación y lo que queda de mi cordura ;-)Si intenta cambiar el color de FAB utilizando la aplicación, hay algún problema. El marco del botón tiene un color diferente, así que lo que debe hacer:
y en código establece el color:
fuente
Solo usa,
no use
fuente
El FAB está coloreado en función de su
colorAccent
.fuente
fuente
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:
su diseño xml:
fuente
String types not allowed (at 'theme' with value 'AppTheme.FloatingAccentButtonOverlay')
. Tal vez me estoy perdiendo un punto con los styles.xml ....android:theme="@style/AppTheme.FloatingAccentButtonOverlay"
pero esto solutin no funciona para mí de cualquier manera ...El documento sugiere que toma el @ color / acento por defecto. Pero podemos anularlo en el código usando
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!
fuente
Cambiar el color de fondo del botón de acción flotante utilizando la línea de abajo
Cambio del color del icono del botón de acción flotante
fuente
Gracias a autocompletar. Tuve suerte después de algunos golpes y pruebas:
- o - (ambos son básicamente lo mismo)
Esto funcionó para mí en API Versión 17 con la biblioteca de diseño 23.1.0.
fuente
Tengo el mismo problema y todo me está arrebatando el pelo. Gracias por esto https://stackoverflow.com/a/35697105/5228412
Lo que podemos hacer..
funciona bien para mí y deseo que otros lleguen hasta aquí.
fuente
Tenga en cuenta que agrega colores en res / values / color.xml e incluye el atributo en su fab
fuente
Con el Tema de material y los componentes de material
FloatingActionButton
por defecto, toma el color establecido en elstyles.xml
atributocolorSecondary
.app:backgroundTint
atributo en xml:Puedes usar
fab.setBackgroundTintList();
Puedes personalizar tu estilo usando el
<item name="backgroundTint">
atributomaterialThemeOverlay
atributo para anular los colores predeterminados solo para algunos componentes:fuente
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:
fuente
Al usar Enlace de datos , puede hacer algo como esto:
He hecho un ejemplo muy simple
fuente
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
fuente
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:
Ahora mi botón de acción flotante con el color que he creado y llamado "corPar":
Funcionó para mi. ¡Buena suerte!
fuente
Si tiene un botón de acción flotante sin dibujo, puede cambiar el tinte mediante programación mediante:
fuente
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)));
fuente
Puede usar este código en caso de que quiera cambiar el color mediante programación
fuente
utilizar
aplicación: backgroundTint = "@ color / orange" en
fuente
para el diseño de materiales, acabo de cambiar el color del botón de acción flotante de esta manera, agregue las dos líneas a continuación en su botón de acción flotante xml. Y hecho,
fuente
en Kotlin:
fuente