web-dev-qa-db-fra.com

Changer l'image Bouton d'action flottant Android

J'ai utilisé cette bibliothèque https://github.com/futuresimple/Android-floating-action-button . Comment puis-je changer l'image du bouton principal? Je veux changer l'image du bouton juste après avoir sélectionné l'un des plus petits boutons.

32
pippo10

De https://developer.Android.com/reference/Android/support/design/widget/FloatingActionButton.html

Lorsque cette classe descend de ImageView, vous pouvez contrôler l’icône qui est affiché via setImageDrawable (Drawable).

Ou vous pouvez utiliser setImageResource ():

fab.setImageResource(R.drawable.ic_shopping_cart_white);
40
Alex Bravo

vous pouvez l'utiliser dans votre fichier .XML:

Android:src="@drawable/icon" // change backgroung icon
app:backgroundTint="@color/icons" // change background color

utilisez ceci dans le code:

 mFloatingActionButton.setImageResource(R.drawable/icon2);
19
AndroidDev

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));

J'espère que ceci vous aidera

3
Umanda

J'ai fait face au même problème récemment, j'ai essayé avec l'option suivante

  fab:fab_icon="@drawable/icon"

et 

 Android:src="@drawable/icon" // change backgroung icon

même essayé par programme 

 fab_menu_btn.setImageResource();

Rien n'a fonctionné.

Solution: remplacer le fichier build.gradle dans l'application 

  compile 'com.getbase:floatingactionbutton:1.10.0'

à

compile 'com.github.toanvc:floatingactionmenu:0.8.9'

Dans un fichier .xml, utilisez:

           <toan.Android.floatingactionmenu.FloatingActionsMenu
          </toan.Android.floatingactionmenu.FloatingActionsMenu>

En activité Fichier:

      floatingActionsMenu.setIcon(getResources().getDrawable(R.mipmap.icon));

Merci

1
suprita

J'ai eu le même problème et j'ai réussi à créer ma propre solution. Peut-être que d'autres trouvent cela aussi utile. J'ai posté la réponse complète à une autre question ( Comment définir une icône pour getbase FloatingActionsMenu ) mais cette partie publiée ici est pertinente pour la question de la modification dynamique de l'image/du bouton du menu principal lorsqu'un des sous-boutons est choisi. Dans ce cas, vous devez combiner la réponse de la "question liée" avec la réponse ci-dessous.

Afin de changer l'icône sur le bouton de menu lorsque vous choisissez un floatingActionButton, il peut être implémenté comme suit:

Créer un bouton de menu dans un fichier xml, créer un ou plusieurs boutons flottants sur un fichier .Java (par programme), définir un bouton de menu (bouton de couleur, bouton de couleur enfoncé et image). Ensuite, ajoutez simplement tous les boutons au bouton de menu. Vous pouvez également désactiver l'animation du bouton de menu en commentant simplement le code dans la classe FloatingActionsMenu.

Puis chaque fois que vous créez un bouton, échantillonnez:

final FloatingActionButton actionA = new FloatingActionButton(getBaseContext());
        actionA.setTitle("Familie");
        actionA.setIcon(R.drawable.world_map);
        actionA.setSize(FloatingActionButton.SIZE_MINI);
        actionA.setColorNormalResId(R.color.red);
        actionA.setColorPressedResId(R.color.black_semi_transparent);
        actionA.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                menuMultipleActions.setMenuButton(R.drawable.icon, R.color.red_transparent, R.color.black_semi_transparent);
                Toast.makeText(MainMapView.this, "Action Description", Toast.LENGTH_SHORT).show();
                ((FloatingActionsMenu) findViewById(R.id.multiple_actions)).collapse();
                return;
            }
        });

Voir la réponse affichée sur le lien pour savoir comment configurer les classes et définir le bouton de menu et le (s) bouton (s) flottant (s).

Donc, la partie importante à noter ici est:

menuMultipleActions.setMenuButton(R.drawable.icon, R.color.red_transparent, R.color.black_semi_transparent);

Cette méthode vous devez ajouter dans la classe FloatingActionsMenu. Vous appelez simplement la méthode après chaque objet floatingActionButton pour lequel vous souhaitez mettre à jour l'image.

Plus d'informations que vous pouvez trouver sur le lien que j'ai posté. Ainsi, lorsque vous cliquez sur l’un des boutons floatingAction.

Pour le moment, la couleur sur le bouton de menu ne se met pas à jour correctement, mais je travaille dessus si je trouve une solution, je mettrai également à jour la réponse ici. J'espère que cela aide, codage heureux.

0
Thanos

Malheureusement, avec cette bibliothèque, vous ne pouvez pas changer l'icône du menu (voir les problèmes de cette bibliothèque pour plus d'informations)

C'est pourquoi j'ai laissé tomber cette bibliothèque pour en utiliser une plus flexible! C'est à l'origine une fourchette mais c'est maintenant plus avancé;)

Voici le lien

Prendre plaisir!

0
ptitvinou