J'utilise l'affichage par carte pour le bouton d'action flottant dans la conception de matériel Android. J'utilise le code suivant pour obtenir le cercle
<Android.support.v7.widget.CardView
Android:id="@+id/fab"
Android:layout_width="38dp"
Android:layout_height="38dp"
Android:layout_marginBottom="10dp"
Android:layout_marginRight="10dp"
card_view:background="@color/blue"
card_view:cardCornerRadius="19dp"
card_view:cardPreventCornerOverlap = "false"
card_view:cardElevation="6dp" >
</Android.support.v7.widget.CardView>
J'ai défini le rayon de coin sur la moitié de la largeur. mais je n'arrive toujours pas à obtenir la forme du cercle.
J'ai résolu le problème. Maintenant, Android fournit la bibliothèque de conception pour la conception de matériel, qui a le FloatingActionButton. Pas besoin de personnaliser l'affichage de la carte pour le bouton d'action flottante.
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/fab"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="bottom|end"
Android:layout_margin="@dimen/fab_margin" />
Ajouter une bibliothèque de conceptions dans des dépendances de niveaux
compile 'com.Android.support:design:23.1.1'
Pour plus de détails, reportez-vous à ce lien link
Pour obtenir une forme de cercle parfaite à l'aide d'une vue de carte, le rayon de l'angle doit être égal à la moitié de la largeur ou de la hauteur (en tenant compte du fait qu'il s'agit d'un carré). De plus, j'ai remarqué que vous utilisez card_view params, ne le faites pas.
<Android.support.v7.widget.CardView
Android:layout_width="38dp"
Android:layout_height="38dp"
app:cardCornerRadius="19dp"
app:cardElevation="6dp"
Android:layout_marginBottom="10dp"
Android:layout_marginRight="10dp"
Android:id="@+id/fab"
Android:background="@color/blue"
>
Pour obtenir une forme circulaire en utilisant la vue Carte, vous pouvez définir la propriété shape, Android: shape = "ring".
app: cardCornerRadius doit être défini sur la moitié de la largeur ou de la hauteur de la vue enfant.
<Android.support.v7.widget.CardView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:innerRadius="0dp"
Android:shape="ring"
app:cardCornerRadius="75dp">
<ImageView
Android:layout_width="150dp"
Android:layout_height="150dp"
Android:layout_gravity="center"
Android:background="@drawable/image" />
</Android.support.v7.widget.CardView>
J'ai essayé votre code et découvert que les cartes étaient moins arrondies en ce qui concerne l'augmentation de la valeur d'élévation de la carte. Essayez de le régler sur zéro et cela au moins le rend meilleur.
card_view:cardElevation="0dp";
Mais une meilleure option serait probablement d’utiliser la FloatingActionButton
pour le bouton rond
<Android.support.design.widget.FloatingActionButton
Android:src="@drawable/your_drawble_name"
app:fabSize="normal"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
Je suis venu avec une solution simple d'utilisation d'un Drawable et c'est incroyable!
Obtenez Drawable here https://drive.google.com/open?id=0B4Vo_ku-aIKzUFFnUjYxYVRLaGc
utilisation
forme = "anneau"
utiliser les mêmes layout_height et layout_weight
et
app: cardCornerRadius = la moitié de layout_height ou layout_weight
exemple
<Android.support.v7.widget.CardView
Android:id="@+id/cardview"
Android:layout_width="110dp"
Android:layout_height="110dp"
Android:shape="ring"
app:cardCornerRadius="55dp">
</Android.support.v7.widget.CardView>
Oui, je l'ai atteint en réduisant la moitié de CardCornerRadius à la hauteur de la vue.