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.
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.
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 ...
Mit clipToPadding="false"wird die Bildlaufansicht über das obere Google Maps-Symbol gescrollt. Dies liegt daran, dass sich beide im selben befinden FrameLayout.
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!).
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".
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"
)quelle
Eine gute Verwendung von
clipToPadding
ist in https://www.youtube.com/watch?v=O47H4PxMf9U (Teil des Material Design- Kurses von Udacity ) beschrieben.Mit
clipToPadding="false"
wird die Bildlaufansicht über das obere Google Maps-Symbol gescrollt. Dies liegt daran, dass sich beide im selben befindenFrameLayout
.quelle
Ich empfehle Ihnen, diesen Artikel unter https://medium.com/google-developers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec#.5x2hz7q0g zu lesen
quelle
Definiert, ob der
ViewGroup
Wille seine untergeordneten Elemente ausschneidet und die Größe (aber nicht die Größe)EdgeEffect
auf 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)
quelle