Estou tentando alterar a cor do botão de ação flutuante do material, mas sem sucesso.
<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" />
Eu tentei adicionar:
android:background="@color/mycolor"
ou via código:
FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.profile_edit_fab);
fab.setBackgroundColor(Color.parseColor("#mycolor"));
ou
fab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#mycolor")));
Mas nenhuma das opções acima funcionou. Eu também tentei as soluções na pergunta duplicada proposta, mas nenhuma delas funciona; o botão permaneceu verde e também se tornou um quadrado.
PS: Também seria bom saber como adicionar efeito cascata, também não conseguia entender isso.
Respostas:
Conforme descrito na documentação , por padrão, ele leva o conjunto de cores em styles.xml atributo colorAccent .
Se você deseja mudar a cor
Como @Dantalian mencionado nos comentários, se você deseja alterar a cor do ícone da Design Support Library até a v22 (inclusive) , você pode usar
Para a Design Support Library desde a v23, você pode usar:
Também com
androidX
bibliotecas, você precisa definir uma borda 0dp no seu layout xml:fonte
A resposta de Vijet Badigannavar está correta, mas o uso
ColorStateList
é geralmente complicado e ele não nos disse como fazê-lo. Como geralmente focamos na alteraçãoView
da cor no estado normal e pressionado, adicionarei mais detalhes:Se você quiser alterar
FAB
a cor no estado normal, basta escreverSe você quiser alterar
FAB
a cor no estado pressionado, obrigado pela Design Support Library 22.2.1 , basta escreverAo definir esse atributo, quando você pressiona por muito tempo
FAB
, uma onda com sua cor aparecerá no seu ponto de toque e será revelada em toda a superfície doFAB
. Observe queFAB
a cor não mudará no estado normal. Abaixo da API 21 (pirulito), não há efeito cascata, masFAB
a cor ainda muda quando você a pressiona.Por fim, se você deseja implementar um efeito mais complexo para os estados, deve se aprofundar
ColorStateList
, aqui está uma pergunta do SO que está discutindo: Como criar ColorStateList programaticamente? .ATUALIZAÇÃO: Obrigado pelo comentário de @ Kaitlyn. Para remover o traçado do FAB usando backgroundTint como sua cor, você pode definir
app:borderWidth="0dp"
seu xml.fonte
app:borderWidth
programaticamente? ObrigadoFloatingActionButton
, tenho medo de que você não possa defini-lo programaticamente agora, já que não há nenhum configurador paramBorderWidth
.Como Vasil Valchev observou em um comentário, é mais simples do que parece, mas há uma diferença sutil que eu não estava percebendo no meu XML.
Observe que é:
e não
fonte
android:backgroundTint=""
é do nível 21 da API e faz parte do design de material do Lollipop e será ignorado abaixo do Lollipop. Também não mudaFAB
completamente a cor porque não é uma cor sólida. Você tem que usar oapp:
único para fazê-lo funcionar.android:color
causou uma falha no meu aplicativo e isso estava me deixando louco! Obrigado por salvar minha aplicativo e o que sobrou da minha sanidade ;-)se você tentar alterar a cor do FAB usando o aplicativo, há algum problema. moldura do botão tem cor diferente, então o que você deve fazer:
e no código defina a cor:
fonte
Apenas use,
não use,
fonte
O FAB é colorido com base no seu
colorAccent
.fonte
fonte
Outras soluções podem funcionar. Esta é a abordagem do gorila de 10 libras que tem a vantagem de ser amplamente aplicável neste e em casos semelhantes:
Styles.xml:
seu layout xml:
fonte
String types not allowed (at 'theme' with value 'AppTheme.FloatingAccentButtonOverlay')
. Talvez eu estou faltando um ponto com o styles.xml ....android:theme="@style/AppTheme.FloatingAccentButtonOverlay"
, mas isso solutin não funciona para mim de qualquer maneira ...O documento sugere que ele use a @ cor / acento por padrão. Mas podemos substituí-lo no código usando
Lembre-se também,
A versão mínima da API para usar esta biblioteca é 15, então você precisa atualizá-la! se você não quiser fazer isso, precisará definir um drawable personalizado e decorá-lo!
fonte
Alterando a cor de fundo do botão de ação flutuante usando a linha abaixo
Alterando a cor do ícone do botão de ação flutuante
fonte
Graças ao preenchimento automático. Eu tive sorte depois de alguns hits e testes:
- ou - (ambos são basicamente a mesma coisa)
Isso funcionou para mim na API Versão 17 com a biblioteca de design 23.1.0.
fonte
Eu tenho o mesmo problema e está tudo arrebentando meu cabelo. Obrigado por este https://stackoverflow.com/a/35697105/5228412
O que podemos fazer..
funciona bem para mim e desejo para os outros que chegarão aqui.
fonte
Observe que você adiciona cores em res / values / color.xml e inclui o atributo no seu fab
fonte
Com o material temático e os componentes materiais
FloatingActionButton
por padrão que leva a cor definida emstyles.xml
atributocolorSecondary
.app:backgroundTint
atributo em xml:Você pode usar
fab.setBackgroundTintList();
Você pode personalizar seu estilo usando o
<item name="backgroundTint">
atributomaterialThemeOverlay
atributo para substituir as cores padrão apenas para alguns componentes:fonte
Novo mapeamento de atributo de tema para o Botão de ação flutuante no material 1.1.0
No tema do seu aplicativo:
fonte
Ao usar a Ligação de dados, você pode fazer algo assim:
Eu fiz um exemplo muito simples
fonte
eu fiz isso como este android: background = "@ color / colorAccent" eu apenas vou para a pasta res, clico nos valores da pasta e, em seguida, em colors.xml em colors.xml Eu mudo a cor do colorAccent e chamo-a no android: background e está feito
fonte
O ponto que falta é que, antes de definir a cor no botão, é importante trabalhar no valor que você deseja para essa cor. Então você pode ir para valores> cor. Você encontrará as padrão, mas também poderá criar cores copiando e colando, alterando as cores e os nomes. Então ... quando você mudar a cor do botão flutuante (em activity_main), poderá escolher o que você criou
Exemplo - código em valores> cores com cores padrão + mais 3 cores que eu criei:
Agora meu botão de ação flutuante com a cor que eu criei e nomeei "corPar":
Funcionou para mim. Boa sorte!
fonte
Se você tiver um botão de ação flutuante sem desenho, poderá alterar a tonalidade programaticamente usando:
fonte
adicione cores no arquivo color.xml e adicione esta linha de código ...
floatingActionButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.fab2_color)));
fonte
Você pode usar esse código caso queira alterar a cor programaticamente
fonte
usar
app: backgroundTint = "@ color / orange" em
fonte
para o design de materiais, alterei a cor do botão de ação flutuante desta forma. Adicione as duas linhas abaixo no seu botão de ação flutuante xml. E feito,
fonte
em Kotlin:
fonte