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
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
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 ...
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.
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.
<!--change this to any color-->
app:rippleColor="@Android:color/transparent"
<!-- try this line instead above -->
app:rippleColor="@color/colorPrimary"
Android:clickable="true"