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.
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.
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 ...
Usar clipToPadding="false"faz com que a exibição de rolagem role pelo ícone superior do Google Maps. Isso ocorre porque ambos estão dentro do mesmo FrameLayout.
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!).
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".
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"
)fonte
Um bom uso
clipToPadding
está descrito em https://www.youtube.com/watch?v=O47H4PxMf9U (parte do curso de Design de materiais da Udacity )Usar
clipToPadding="false"
faz com que a exibição de rolagem role pelo ícone superior do Google Maps. Isso ocorre porque ambos estão dentro do mesmoFrameLayout
.fonte
Recomendamos que você dê uma olhada neste artigo https://medium.com/google-developers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec#.5x2hz7q0g
fonte
Define se o
ViewGroup
clipe recortará seus filhos e o redimensionará (mas não recortará)EdgeEffect
para o preenchimento, se o preenchimento não for zero. Esta propriedade está configurada comotrue
padrão.Pode ser um valor booleano, como "true" ou "false".
Métodos relacionados:
setClipToPadding(boolean)
fonte