web-dev-qa-db-fra.com

android: changer dynamiquement l'icône FAB (bouton d'action flottant) à partir du code

Comment changer l'icône FAB dans une activité pendant l'exécution. J'ai ce code ->

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fabMainActivity);

Je sais que cela est possible en utilisant fab.setBackgroundDrawable(); mais je suis un débutant sur Android, je ne comprends pas comment faire cela.

Toute aide sera grandement appréciée.

Merci

41
ezcodr

Modification de la source FloatingActionButton:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
            floatingActionButton.setImageDrawable(getResources().getDrawable(R.drawable.ic_full_sad, context.getTheme()));
        } else {
            floatingActionButton.setImageDrawable(getResources().getDrawable(R.drawable.ic_full_sad));
    }

Cela peut être remplacé par le code suivant de la bibliothèque de support:

floatingActionButton.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.ic_full_sad));
77
Sunny

Ou vous utilisez la bibliothèque de support:

floatingActionButton.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.ic_full_sad));
16
Spipau

Si vous utilisez la bibliothèque de support:

floatingActionButton.setImageResource(R.drawable.icon_name)
13
PaulT

Supposons que vous utiliserez l'image ic_arrow_forward.png comme arrière-plan de votre fab:

fab.setImageResource(R.mipmap.ic_arrow_forward);

1
EckoTan

Ce que j'utilise comme suit,

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab_btn);

// State 1 -on

fab.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.fab_on));

// State  2 - off

fab.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.fab_off));
0
Umanda