Android, что делает атрибут clipToPadding?


172

Я хотел бы знать, что clipToPaddingделает атрибут ViewGroupв Android?

Я просматривал документы и некоторые веб-сайты, но ни один из них, с которыми я сталкивался, на самом деле не объясняет, что это делает и что это значит, ну, в общем, я не мог понять, поэтому я подумал, что было бы неплохо задать это здесь.

Ответы:


423

Вы можете использовать clipToPadding для прокручиваемых представлений. Скажем, у вас есть, например, просмотр списка, и вы установили отступы сверху и снизу. Обычно отступы видны независимо от того, какие элементы видны на экране. На диаграмме ниже представлен список из 10 элементов, но на экране видны только 4 элемента со стандартными настройками clipToPadding:

  • (Дополнение)
  • пункт 4
  • пункт 5
  • пункт 6
  • пункт 7
  • (Дополнение)

Теперь, если вам нужно установить clipToPadding="false"вместо обычного применения ко всему виду, он применяет заполнение только к конечным элементам, это то, что вы увидите в том же сценарии:

  • пункт 4
  • пункт 5
  • пункт 6
  • пункт 7

Теперь, если бы вы прокрутили список вверх или вниз по списку, вы увидите следующее:

  • (Дополнение)
  • пункт 1
  • пункт 2
  • пункт 3
  • пункт 4

ИЛИ

  • пункт 7
  • пункт 8
  • пункт 9
  • пункт 10
  • (Дополнение)

Практическое использование для этого, например, если у вас есть кнопка с плавающим действием, вы должны использовать clipToPadding в сочетании с нижним заполнением, чтобы гарантировать, что FAB может видеть весь нижний элемент без помех.

Имеет ли это смысл?


60
Я готов заплатить, если официальные документы начнут давать такое объяснение другим темам
Маниш Кумар Шарма

Относится ли это только к представлению переработчика или какой-либо группе?
RamPrasadBismil

Я люблю этот комментарий, и всегда, что я сталкиваюсь с клипом, чтобы отступить, должен возвратиться к нему! Спасибо :)
Пол

Очень хорошее объяснение! Congrats!
Майкон Кардосо

303

Я знаю, что ответ с наивысшим рейтингом объясняет это довольно четко через текст, но, как говорится,

« Картинка стоит тысячи слов »

Вот GIF стоимостью 1500 с изображением того же самого:

(Слева: clipToPadding = "true"Справа: clipToPadding = "false")

введите описание изображения здесь


6
Тем не менее, как-то текстовые ответы легче понять;) Спасибо за внимание, хотя!
TWiStErRob

2
картинка говорит гораздо больше, чем слова, но слова были гораздо более полными ... здесь не показан конец правильного списка, что случилось с ним, если у него есть нижнее заполнение ...
MHSFisher

10

Хорошее использование clipToPaddingописано в https://www.youtube.com/watch?v=O47H4PxMf9U (часть курса Udacity по дизайну материалов )

Использование clipToPadding="false"делает вид прокрутки прокручивать верхний значок Google Maps. Это связано с тем, что оба находятся внутри одного и того же FrameLayout.

Google Play Магазин Google Maps, показывая клиптопад


6

Я рекомендую вам взглянуть на эту статью https://medium.com/google-developers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec#.5x2hz7q0g

Или, может быть, вы хотите, чтобы ваш RecyclerView прокручивался под прозрачной панелью навигации - используя android: fitsSystemWindows = «true» в сочетании с android: clipToPadding = «false», содержимое прокрутки будет находиться за элементами управления, но при прокрутке вниз последний элемент будет по-прежнему дополнен панелью навигации (а не скрыт под ней!).


-2

Определяет, ViewGroupбудет ли объект обрезать свои дочерние элементы и изменять их размер (но не обрезать) EdgeEffectдо отступов, если отступ не равен нулю. Это свойство установлено trueпо умолчанию.

Может быть логическим значением, таким как «true» или «false».

Родственные методы:

setClipToPadding(boolean)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.