Android Que fait l'attribut clipToPadding?

172

J'aimerais savoir à quoi clipToPaddingsert l' attribut ViewGroupsous Android?

J'ai parcouru la documentation et certains sites Web, mais aucun de ceux que j'ai rencontrés n'explique réellement ce que cela fait et ce que cela signifie, enfin aucun que je puisse comprendre, alors j'ai pensé que ce serait une bonne idée de le demander ici.

Ersen Osman
la source

Réponses:

422

Vous pouvez utiliser clipToPadding pour les vues qui défilent. Supposons que vous ayez une vue de liste par exemple et que vous ayez un remplissage en haut et en bas. Normalement, le remplissage est visible quels que soient les éléments visibles à l'écran. Le diagramme 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)
  • élément 4
  • point 5
  • point 6
  • point 7
  • (rembourrage)

Maintenant, si vous deviez définir clipToPadding="false"au lieu d'être simplement appliqué normalement à la vue entière, il n'applique que le remplissage aux éléments finaux, voici ce que vous verriez dans le même scénario:

  • élément 4
  • point 5
  • point 6
  • point 7

Maintenant, si vous deviez faire défiler vers le haut ou le bas de la liste, voici ce que vous verriez:

  • (rembourrage)
  • objet 1
  • élément 2
  • élément 3
  • élément 4

OU

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

Une utilisation pratique pour cela est que si vous avez un bouton d'action flottant par exemple, vous devez utiliser clipToPadding combiné avec un rembourrage inférieur pour vous assurer que l'intégralité de l'élément inférieur peut être vu sans être obstrué par le FAB.

Cela a-t-il du sens?

Dom
la source
60
Je suis prêt à payer si les documents officiels commencent à donner ce genre d'explication pour d'autres sujets
Manish Kumar Sharma
S'applique-t-il uniquement à recyclerview ou à un groupe de vues?
RamPrasadBismil
J'adore ce commentaire et toujours que je suis face à un clip au rembourrage faut y revenir! Merci :)
Pol
Très belle explication! Félicitations!
Maycon Cardoso le
303

Je sais que la réponse la mieux notée l'explique assez clairement à travers le texte, mais comme il est dit,

" Une image vaut mille mots "

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

(Gauche: clipToPadding = "true"droite: clipToPadding = "false")

entrez la description de l'image ici

Manish Kumar Sharma
la source
6
Pourtant, les réponses textuelles sont plus faciles à comprendre;) Merci pour la vis!
TWiStErRob
2
l'image en dit beaucoup plus que des mots, mais les mots étaient beaucoup plus complets ... ici pas montré la fin de la bonne liste que ce qui s'est passé pour elle si elle a un rembourrage en bas ...
MHSFisher
6

Je vous recommande de jeter un œ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 de défilement sera derrière les commandes mais, lorsque vous le faites défiler vers le bas, le dernier élément sera toujours rempli pour être au-dessus de la barre de navigation (plutôt que caché en dessous!).

cpienovi
la source
-2

Définit si le ViewGroupdécoupera ses enfants et les redimensionnera (mais pas) EdgeEffectà son remplissage, si le remplissage n'est pas égal à zéro. Cette propriété est définie truepar défaut.

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

Méthodes associées:

setClipToPadding(boolean)

Abhinav Gupta
la source