228 votes

Android : que fait l'attribut clipToPadding ?

J'aimerais savoir ce que le clipToPadding fait pour ViewGroup dans Android ?

J'ai parcouru la documentation et quelques sites web mais aucun n'explique réellement ce qu'il fait et ce qu'il signifie, enfin aucun que je puisse comprendre, alors j'ai pensé que ce serait une bonne idée de le demander ici.

552voto

Dom Points 4519

Vous pouvez utiliser clipToPadding pour les vues qui défilent. Disons que vous avez une vue de liste par exemple et que vous avez défini un remplissage en haut et en bas. Normalement, le padding est visible quels que soient les éléments visibles à l'écran. Le schéma ci-dessous représente une liste de 10 éléments, mais seuls 4 sont visibles à l'écran, avec les paramètres par défaut de clipToPadding :

  • (rembourrage)
  • point 4
  • point 5
  • point 6
  • point 7
  • (rembourrage)

Maintenant, si tu devais mettre clipToPadding="false" au lieu d'être appliqué normalement à l'ensemble de la vue, il n'applique le remplissage qu'aux éléments finaux, c'est ce que vous verriez dans le même scénario :

  • point 4
  • point 5
  • point 6
  • point 7

Si vous faites défiler la liste vers le haut ou vers le bas, voici ce que vous verrez :

  • (rembourrage)
  • point 1
  • point 2
  • point 3
  • point 4

OU

  • point 7
  • point 8
  • point 9
  • point 10
  • (rembourrage)

Si vous disposez d'un bouton d'action flottant, par exemple, vous devez utiliser la fonction clipToPadding combinée au remplissage inférieur pour vous assurer que l'intégralité de l'élément inférieur est visible sans être obstruée par le FAB.

Est-ce que ça a un sens ?

124 votes

Je suis prêt à payer si les documents officiels commencent à donner ce genre d'explication pour d'autres sujets.

0 votes

Est-ce que cela s'applique uniquement au recyclerview ou à tout groupe de vues ?

1 votes

J'adore ce commentaire et toujours que je fais face à un clip pour rembourrer doivent y revenir ! Merci :)

418voto

pulp_fiction Points 10

Je sais que la réponse la mieux notée explique cela assez clairement par le texte mais comme il est dit,

" Une image vaut mille mots "

Voici un GIF d'une valeur de 1500 représentant la même chose :

(A gauche : clipToPadding = "true" Bien : clipToPadding = "false" )

enter image description here

12 votes

Pourtant, d'une certaine manière, les réponses en texte sont plus faciles à comprendre ;) Merci quand même pour la vis !

4 votes

l'image en dit beaucoup plus que les mots, mais les mots étaient beaucoup plus complets ... ici pas montré la fin de la liste de droite que ce qui s'est passé pour elle si elle a le padding inférieur ...

0 votes

@MHSFisher , la réponse est destinée à démontrer le rembourrage supérieur.

11voto

user1587329 Points 91

Une belle utilisation de clipToPadding est décrit dans https://www.youtube.com/watch?v=O47H4PxMf9U (partie de Le Material Design d'Udacity cours)

Utilisation de clipToPadding="false" fait défiler la vue de défilement sur l'icône supérieure de Google Maps. Cela est dû au fait que les deux se trouvent dans la même FrameLayout .

google play store of google maps, showing cliptopadding

7voto

cpienovi Points 280

Je vous recommande de jeter un coup d'œil à cet article. https://medium.com/google-developers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec#.5x2hz7q0g

Ou peut-être voulez-vous que votre RecyclerView défile sous une barre de navigation transparente en utilisant Android:fitsSystemWindows="true" en conjonction avec Android:clipToPadding="false", votre contenu défilant se trouvera derrière les contrôles mais, lorsqu'il défilera jusqu'en bas, le dernier élément sera toujours rembourré pour se trouver au-dessus de la barre de navigation. (plutôt que caché en dessous !).

-3voto

Abhinav Gupta Points 10

Définit si le ViewGroup coupera ses enfants et redimensionnera (mais ne coupera pas) les éléments suivants EdgeEffect à son padding, si celui-ci n'est pas nul. Cette propriété est définie à true par défaut.

Peut être une valeur booléenne, telle que "true" ou "false".

Méthodes connexes :

setClipToPadding(boolean)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X