Android, o que o atributo clipToPadding faz?

171

Gostaria de saber o que o clipToPaddingatributo faz ViewGroupno Android?

Eu já examinei os documentos e alguns sites, mas nenhum que eu encontrei realmente explica o que faz e o que significa, bem, nenhum que eu pudesse entender, então pensei que seria uma boa ideia perguntar aqui.

Ersen Osman
fonte

Respostas:

421

Você pode usar clipToPadding para visualizações que rolam. Digamos que você tenha uma lista de exibição, por exemplo, e que tenha preenchimento definido na parte superior e inferior. Normalmente, o preenchimento é visível, independentemente dos itens visíveis na tela. O diagrama abaixo representa uma lista com 10 itens, mas apenas 4 são visíveis na tela, com as configurações padrão de clipToPadding:

  • (preenchimento)
  • item 4
  • item 5
  • item 6
  • item 7
  • (preenchimento)

Agora, se você definisse, em clipToPadding="false"vez de apenas ser aplicado normalmente em toda a exibição, ela aplica apenas o preenchimento aos itens finais, é o que você veria no mesmo cenário:

  • item 4
  • item 5
  • item 6
  • item 7

Agora, se você rolar para a parte superior ou inferior da lista, é isso que você verá:

  • (preenchimento)
  • item 1
  • item 2
  • item 3
  • item 4

OU

  • item 7
  • item 8
  • item 9
  • item 10
  • (preenchimento)

Um uso prático disso é que, por exemplo, se você tiver um botão de ação flutuante, use clipToPadding combinado com o preenchimento inferior para garantir que a totalidade do item inferior possa ser vista sem ser obstruída pelo FAB.

Isso faz sentido?

Dom
fonte
59
Estou pronto a pagar se docs oficiais começar a dar este tipo de explicação para outros tópicos
Manish Kumar Sharma
Aplica-se apenas à visualização de reciclagem ou a qualquer grupo de visualização?
RamPrasadBismil
Eu amo esse comentário e sempre que eu encaro um clipe de estofamento, tenho que voltar a ele! Obrigado :)
Pol
Explicação muito agradável! Parabéns!
Maycon Cardoso 16/07
302

Eu sei que a resposta mais bem avaliada explica isso claramente através do texto, mas como foi dito,

" Uma imagem vale mais que mil palavras "

Aqui está um GIF no valor de 1500 representando o mesmo:

(Esquerda: clipToPadding = "true"Direita: clipToPadding = "false")

insira a descrição da imagem aqui

Manish Kumar Sharma
fonte
6
No entanto, de alguma forma, as respostas em texto são mais fáceis de entender;) Obrigado pelo vis!
TWIStErRob
2
imagem diz muito mais do que palavras, mas as palavras eram muito mais completo ... aqui não mostrado o fim da lista da direita que o que aconteceu para ele se ele tem estofo fundo ...
MHSFisher
6

Recomendamos que você dê uma olhada neste artigo https://medium.com/google-developers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec#.5x2hz7q0g

Ou talvez você queira que o RecyclerView role por baixo de uma barra de navegação transparente - usando android: fitsSystemWindows = "true" em conjunto com o android: clipToPadding = "false", seu conteúdo de rolagem estará atrás dos controles, mas, quando rolado para baixo, o último item ainda será preenchido para ficar acima da barra de navegação (em vez de oculto por baixo!).

cpienovi
fonte
-2

Define se o ViewGroupclipe recortará seus filhos e o redimensionará (mas não recortará) EdgeEffectpara o preenchimento, se o preenchimento não for zero. Esta propriedade está configurada como truepadrão.

Pode ser um valor booleano, como "true" ou "false".

Métodos relacionados:

setClipToPadding(boolean)

Abhinav Gupta
fonte