Android Was macht das Attribut clipToPadding?

170

Ich möchte wissen, wofür das clipToPaddingAttribut ViewGroupin Android funktioniert .

Ich habe die Dokumente und einige Websites durchgesehen, aber keine, auf die ich gestoßen bin, erklärt tatsächlich, was es tut und was es bedeutet. Nun, keine, die ich wirklich verstehen könnte, also dachte ich, es wäre eine gute Idee, es hier zu fragen.

Ersen Osman
quelle

Antworten:

417

Sie können clipToPadding für Ansichten verwenden, die einen Bildlauf durchführen. Angenommen, Sie haben beispielsweise eine Listenansicht und oben und unten eine Polsterung. Normalerweise ist die Polsterung sichtbar, unabhängig davon, welche Elemente auf dem Bildschirm sichtbar sind. Das folgende Diagramm zeigt eine Liste mit 10 Elementen, von denen jedoch nur 4 mit den Standardeinstellungen für clipToPadding auf dem Bildschirm angezeigt werden:

  • (Polsterung)
  • Punkt 4
  • Punkt 5
  • Punkt 6
  • Punkt 7
  • (Polsterung)

Wenn Sie nun festlegen, clipToPadding="false"anstatt nur normal auf die gesamte Ansicht angewendet zu werden, wird der Abstand nur auf die Endelemente angewendet. Dies sehen Sie im selben Szenario:

  • Punkt 4
  • Punkt 5
  • Punkt 6
  • Punkt 7

Wenn Sie nun zum Anfang oder Ende der Liste scrollen würden, würden Sie Folgendes sehen:

  • (Polsterung)
  • Gegenstand 1
  • Punkt 2
  • Punkt 3
  • Punkt 4

ODER

  • Punkt 7
  • Punkt 8
  • Punkt 9
  • Punkt 10
  • (Polsterung)

Eine praktische Anwendung hierfür ist, wenn Sie beispielsweise eine schwebende Aktionsschaltfläche haben, sollten Sie clipToPadding in Kombination mit der unteren Polsterung verwenden, um sicherzustellen, dass das gesamte untere Element sichtbar ist, ohne vom FAB behindert zu werden.

Ist das sinnvoll?

Dom
quelle
57
Ich bin bereit zu zahlen, wenn offizielle Dokumente diese Art von Erklärung für andere Themen herausgeben
Manish Kumar Sharma
Gilt dies nur für recyclerview oder eine Ansichtsgruppe?
RamPrasadBismil
Ich liebe diesen Kommentar und immer, dass ich vor einem Clip zum Auffüllen stehe, muss ich darauf zurückkommen! Danke :)
Pol
Sehr schöne Erklärung! Glückwunsch!
Maycon Cardoso vor
300

Ich weiß, dass die am besten bewertete Antwort dies ziemlich klar durch Text erklärt, aber wie gesagt,

" Ein Bild sagt mehr als tausend Worte "

Hier ist ein GIF im Wert von 1500, das dasselbe darstellt:

(Links: clipToPadding = "true"Rechts: clipToPadding = "false")

Geben Sie hier die Bildbeschreibung ein

Manish Kumar Sharma
quelle
6
Doch irgendwie sind die textbasierten Antworten leichter zu verstehen;) Danke aber für das Vis!
TWiStErRob
2
Bild sagen viel mehr als Wörter, aber Wörter waren viel vollständiger ... hier nicht das Ende der rechten Liste gezeigt, was für es passiert ist, wenn es untere Polsterung hat ...
MHSFisher
6

Ich empfehle Ihnen, diesen Artikel unter https://medium.com/google-developers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec#.5x2hz7q0g zu lesen

Oder Sie möchten, dass Ihr RecyclerView unter einer transparenten Navigationsleiste blättert. Wenn Sie android: fitSystemWindows = "true" in Verbindung mit android: clipToPadding = "false" verwenden, befindet sich Ihr Bildlaufinhalt hinter den Steuerelementen. Wenn Sie jedoch nach unten scrollen, Das letzte Element wird weiterhin über der Navigationsleiste aufgefüllt (und nicht darunter versteckt!).

cpienovi
quelle
-2

Definiert, ob der ViewGroupWille seine untergeordneten Elemente ausschneidet und die Größe (aber nicht die Größe) EdgeEffectauf seine Auffüllung ändert, wenn die Auffüllung nicht Null ist. Diese Eigenschaft ist auf gesetzttrue standardmäßig aktiviert.

Kann ein boolescher Wert sein, z. B. "true" oder "false".

Verwandte Methoden:

setClipToPadding(boolean)

Abhinav Gupta
quelle