Android, co robi atrybut clipToPadding?

170

Chciałbym wiedzieć, co to clipToPadding służy ten atrybutViewGroup w systemie Android?

Przeszukałem dokumenty i niektóre strony internetowe, ale żadna, na którą się natknąłem, nie wyjaśnia, co to robi i co to znaczy, cóż, żadna z nich nie byłaby w stanie zrozumieć, więc pomyślałem, że dobrym pomysłem byłoby zadać to tutaj.

Ersen Osman
źródło

Odpowiedzi:

419

Możesz użyć clipToPadding dla widoków, które przewijają się. Załóżmy, że masz na przykład widok listy i masz dopełnienie ustawione na górze i na dole. Zwykle wypełnienie jest widoczne bez względu na to, które elementy są widoczne na ekranie. Poniższy diagram przedstawia listę z 10 elementami, ale tylko 4 są widoczne na ekranie, z domyślnymi ustawieniami clipToPadding:

  • (wyściółka)
  • poz.4
  • poz.5
  • poz.6
  • poz.7
  • (wyściółka)

Teraz, gdybyś ustawił clipToPadding="false"zamiast zwykłego stosowania do całego widoku, zastosuje on wypełnienie tylko do elementów końcowych, oto co zobaczysz w tym samym scenariuszu:

  • poz.4
  • poz.5
  • poz.6
  • poz.7

Teraz, gdybyś przewinął do góry lub do dołu listy, zobaczysz to:

  • (wyściółka)
  • przedmiot 1
  • poz.2
  • poz.3
  • poz.4

LUB

  • poz.7
  • poz.8
  • poz.9
  • poz.10
  • (wyściółka)

Praktycznym zastosowaniem jest to, że jeśli masz na przykład pływający przycisk akcji, powinieneś użyć clipToPadding w połączeniu z wyściółką dolną, aby zapewnić, że całość dolnego elementu będzie widoczna bez zasłaniania przez FAB.

Czy to ma sens?

Dom
źródło
58
Jestem gotów zapłacić, jeśli oficjalni doktorzy zaczną udzielać tego rodzaju wyjaśnień na inne tematy
Manish Kumar Sharma
Czy dotyczy tylko widoku recyklingu lub dowolnej grupy widoków?
RamPrasadBismil
Uwielbiam ten komentarz i zawsze, gdy mam do czynienia z klipsem do wypełnienia, muszę do niego wrócić! Dzięki :)
Pol
Bardzo ładne wyjaśnienie! Gratulacje!
Maycon Cardoso
300

Wiem, że najwyżej oceniana odpowiedź wyjaśnia to dość jasno w tekście, ale jak zostało powiedziane,

Obraz jest wart tysiąca słów

Oto GIF o wartości 1500 przedstawiający to samo:

(Lewy: clipToPadding = "true"Prawy: clipToPadding = "false")

wprowadź opis obrazu tutaj

Manish Kumar Sharma
źródło
6
Jednak w jakiś sposób odpowiedzi tekstowe są łatwiejsze do zrozumienia;) Dzięki za vis!
TWiStErRob
2
zdjęcie mówi znacznie więcej niż słowa, ale słowa były znacznie bardziej kompletne ... tutaj nie pokazano końca prawej listy, co się z nim stało, jeśli ma dolną wyściółkę ...
MHSFisher
6

Polecam zapoznać się z tym artykułem https://medium.com/google-developers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec#.5x2hz7q0g

A może chcesz, aby Twój RecyclerView przewijał się pod przezroczystym paskiem nawigacyjnym - używając android: fitSystemWindows = ”true” w połączeniu z android: clipToPadding = ”false”, przewijana zawartość będzie znajdować się za kontrolkami, ale po przewinięciu do dołu, ostatni element nadal będzie wyściełany tak, aby znajdował się nad paskiem nawigacji (a nie ukryty pod spodem!).

cpienovi
źródło
-2

Określa, czy ViewGroupbędzie przycinać swoje elementy podrzędne i zmieniać rozmiar (ale nie przycinać) EdgeEffectdo jego wypełnienia, jeśli dopełnienie nie jest równe zero. Ta właściwość jest ustawiona natrue domyślnie.

Może być wartością logiczną, np. „Prawda” lub „fałsz”.

Powiązane metody:

setClipToPadding(boolean)

Abhinav Gupta
źródło