web-dev-qa-db-fra.com

Définition de l'ondulation FloatingActionButton

J'essaie de définir l'ondulation FloatingActionButton sur quelque chose de similaire à this

De la conception matérielle.

Le problème est que je ne reçois qu'un "style plat" où il n'y a pas d'ondulation, cela change simplement le bouton de, dans mon cas, blanc à orange, sans l'animation indiquée dans le lien ci-dessus.

J'ai suivi la réponse ici:

Exemple avec FloatingActionButton avec bibliothèque de support

mais mon FAB est toujours ennuyeux!

EDIT: Mon code actuel est: XML:

  <Android.support.design.widget.FloatingActionButton
     Android:id="@+id/item_activity_fab"
     Android:layout_width="64dp"
     Android:layout_height="64dp"
     Android:layout_marginRight="16dp"
     Android:src="@drawable/watch"
     app:borderWidth="0dp"
     app:elevation="6dp"
     app:fabSize="normal"
     app:layout_anchor="@id/item_activity_title_background"
     app:layout_anchorGravity="top|right|end"
     app:pressedTranslationZ="12dp"
     app:rippleColor="@Android:color/transparent"/>

Java:

    mAddToWatchListFAB.setRippleColor(ContextCompat.getColor(this, R.color.orange_6));

J'ai essayé cette méthode sur le FAB mais cela n'a pas semblé fonctionner. J'ai aussi essayé les étapes dans le lien que j'ai fourni

13
x10sion

ajouter les 2 propriétés suivantes à votre code XML de bouton d'action flottante

 app:rippleColor="@color/textcolor"
 Android:clickable="true"

rendre FAB cliquable ajoute une couleur d'ondulation

27
Usman Iqbal

Vous pouvez le mettre en œuvre comme dit mon Gabriele Mariotti

Vous pouvez faire quelque chose comme ça:

<Button
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      Android:background="@drawable/ripple"

    />

Où le fichier ripple.xml est:

<ripple xmlns:Android="http://schemas.Android.com/apk/res/Android" 
                      Android:color="?android:colorControlHighlight">
        <item Android:id="@Android:id/mask">
            <shape Android:shape="oval">
                <solid Android:color="?android:colorAccent" />
            </shape>
        </item>
 </ripple>

comme indiqué dans ici qui peut s’appliquer à tous les besoins d’ondulation. 

METTRE &AGRAVE; JOUR

<Android.support.design.widget.FloatingActionButton
     Android:id="@+id/item_activity_fab"
     Android:layout_width="64dp"
     Android:layout_height="64dp"
     Android:layout_marginRight="16dp"
     Android:src="@drawable/watch"
     Android:background="@drawable/ripple"
     app:borderWidth="0dp"
     app:elevation="6dp"
     app:fabSize="normal"
     app:layout_anchor="@id/item_activity_title_background"
     app:layout_anchorGravity="top|right|end"
     app:pressedTranslationZ="12dp"/>

Et utilisez le fichier ripple.xml ci-dessus. Si simple! Tout ce que vous avez à faire est de masquer :)

UPDATE 2

Pour les API 20 et moins, il existe des options pour implémenter l'effet d'entraînement. Découvrez les conseils suivants prononcés par Marcin Orlowski

Heureusement, peu d'implémentations personnalisées sont déjà disponibles:

comprenant des ensembles de widgets sur le thème Materlial compatibles avec les anciennes versions d’Android:

afin que vous puissiez essayer un de ceux-ci ou google pour d'autres "widgets matériels" ou alors ...

4
Sibidharan

Au lieu d'utiliser transparent, essayez d'utiliser:

app:rippleColor="@color/colorAccentLight"

où colorAccentLight est un accent plus brillant de votre couleur d'accent actuelle. Dans mon cas, j'ai utilisé:

<color name="colorAccent">#E040FB</color>
<color name="colorAccentLight">#E1BEE7</color>

dans le fichier colors.xml ... Vous pouvez également définir une autre couleur aléatoire (autre que votre couleur d'accent actuelle) à des fins de test.

1
DaveNOTDavid

Votre couleur d'ondulation est transparente. Je m'attends à ce que votre ondulation se manifeste normalement, mais comme elle est invisible, vous ne pouvez pas la voir.

Voir cette réponse pour une solution.

Android: pouvez-vous avoir un effet d'entraînement dont la couleur d'état par défaut est transparente?

0
Kuffs
    <!--change this to any color-->
    app:rippleColor="@Android:color/transparent"

    <!-- try this line instead above -->
    app:rippleColor="@color/colorPrimary"
    Android:clickable="true"
0
user3607151