É possível definir a posição absoluta de uma visualização no Android? (Eu sei que existe umAbsoluteLayout
, mas está obsoleto ...)
Por exemplo, se eu tiver uma tela de 240x320px, como posso adicionar uma ImageView
que seja 20x20px, de modo que seu centro esteja na posição (100,100)?
view.setTranslationX()
ouview.offsetLeftAndRight()
Respostas:
Você pode usar RelativeLayout. Digamos que você queira um ImageView 30x40 na posição (50,60) dentro do seu layout. Em algum lugar da sua atividade:
Mais exemplos:
Coloca dois ImageViews 30x40 (um amarelo, um vermelho) em (50,60) e (80,90), respectivamente:
Coloca um ImageView amarelo 30x40 em (50,60) e outro ImageView vermelho 30x40 <80,90> em relação ao ImageView amarelo:
fonte
ImageView
para colocar, não seria melhor usar umFrameLayout
?Em geral, você pode adicionar uma View em uma posição específica usando um FrameLayout como contêiner, especificando os atributos leftMargin e topMargin .
O exemplo a seguir colocará um ImageView de 20x20px na posição (100.200) usando um FrameLayout como contêiner em tela cheia:
XML
Atividade / Fragmento / Visualização personalizada
Isso funcionará porque as margens podem ser usadas como coordenadas absolutas (X, Y) sem um RelativeLayout:
fonte
Apenas para adicionar à resposta de Andy Zhang acima, se você quiser, pode dar o parâmetro para rl.addView e fazer alterações posteriormente, para:
Igualmente bem poderia ser escrito como:
Portanto, se você reter a variável params, poderá alterar o layout de iv a qualquer momento após adicioná-la a rl.
fonte
Uma maneira mais limpa e dinâmica sem codificar nenhum valor de pixel no código.
Eu queria posicionar uma caixa de diálogo (que infla rapidamente) exatamente abaixo de um botão clicado.
e resolveu assim:
No entanto, você deve garantir que o layout pai de
myView
seja uma instância deRelativeLayout
.código mais completo:
Dessa forma, você ainda pode esperar que a visualização de destino se ajuste a qualquer parâmetro de layout definido usando arquivos XML de layout, em vez de codificar esses pixels / dps no código Java.
fonte
Coloque qualquer visualização no seu ponto X e Y desejado
arquivo de layout
Classe Java
Feito
fonte
Caso isso ajude alguém, você também pode experimentar este animador ViewPropertyAnimator como abaixo
créditos para resposta bpr10
fonte
Experimente o código abaixo para definir a visualização em um local específico: -
fonte
Meu código para o Xamarin , estou usando o FrameLayout para essa finalidade e a seguir está o meu código:
Isso foi útil para mim, porque eu precisava que a propriedade de visão se sobrepusesse com base em sua aparência, por exemplo, as visualizações são empilhadas uma sobre a outra .
fonte