Quero adicionar um número desconhecido de ImageView
visualizações ao meu layout com margem. Em XML, eu posso usar layout_margin
assim:
<ImageView android:layout_margin="5dip" android:src="@drawable/image" />
Existe ImageView.setPadding()
, mas não ImageView.setMargin()
. Eu acho que é ao longo das linhas de ImageView.setLayoutParams(LayoutParams)
, mas não tenho certeza do que alimentar isso.
Alguém sabe?
FrameLayout.LayoutParams
e talvez com outros: stackoverflow.com/questions/5401952/…android:layout_centerHorizontal = "true"
e de queandroid:layout_alignParentBottom = "true"
maneira eu poderia fazer isso?fonte
android:layout_centerHorizontal = "true"
e de queandroid:layout_alignParentBottom = "true"
maneira eu poderia fazer isso?Todos os exemplos acima substituirão, na verdade, quaisquer parâmetros já presentes na Visualização, o que pode não ser o desejado. O código abaixo apenas estenderá os parâmetros existentes, sem substituí-los:
fonte
O código de Kevin cria um
MarginLayoutParams
objeto redundante . Versão mais simples:fonte
Se você deseja alterar a margem da visualização de imagens, mas mantenha todas as outras margens intactas.
Obtenha MarginLayoutParameters da sua visualização de imagem neste caso:
myImageView
Agora basta alterar a margem que deseja alterar, mas deixe as outras como estão:
fonte
Você pode usar este método, caso deseje especificar margens no dp:
fonte
Eu uso simplesmente isso e funciona muito bem:
A unidade de setMargins () é pixel, não dp. Se você deseja definir margem no dp, apenas dentro do arquivo values / dimens.xml, crie suas dimensões como:
e acesso como:
fonte
Se você usa o kotlin, isso pode ser simplificado criando uma função de extensão
Agora tudo o que você precisa é de uma visualização, e essa função de extensão pode ser usada em qualquer lugar.
fonte
left
eright
margens, mas se você tiver margens relativas (start
eend
), não funcionará. Eu escrevi uma essência com uma versão 'aprimorada' do seu código: gist.github.com/Grohden/f40c53bf86c5395638f7a44bf90e732d (asetMarginsRelative
função) - você poderia incluir isso na sua resposta?fonte
Para mim, isso funcionou:
fonte
fonte
Usar um método semelhante a esse pode poupar algumas dores de cabeça em algumas situações. Se você tiver duas passagens de ajustes programáticos com margens, é mais seguro verificar se já existem alguns layoutParams configurados. Se já existem margens, deve-se aumentá-las e não substituí-las:
fonte
Aqui está um exemplo para adicionar margem de 8px à esquerda, superior, direita e inferior.
fonte
Resposta a partir do ano 2020:
e chame-o simplesmente no seu código
fonte