Se você olhar para a imagem anexada. Preciso que meu botão esteja alinhado à direita, mas por algum motivo não está funcionando com 'gravidade: certo' ...
Aqui está o meu código para esse layout:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="35dp">
<TextView
android:id="@+id/lblExpenseCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cancel"
android:textColor="#404040"
android:layout_marginLeft="10dp"
android:textSize="20sp"
android:layout_marginTop="9dp" />
<Button
android:id="@+id/btnAddExpense"
android:layout_width="wrap_content"
android:layout_height="45dp"
android:background="@drawable/stitch_button"
android:layout_marginLeft="10dp"
android:text="@string/add"
android:layout_gravity="right"
android:layout_marginRight="15dp" />
</LinearLayout>
Por que não está funcionando ?!
android
android-layout
ROMANIA_engineer
fonte
fonte
Respostas:
Use o código abaixo para isso
fonte
LinearLayout
Solução única . Apenas adicionando uma visualização de espaçamento simples:(Ninguém parecia ter mencionado essa, apenas soluções de vários layouts mais complicadas.)
Observe a visualização "destacada", não modifiquei mais nada. Altura = 0 garante que não seja visível. Largura = 0 é porque a largura é determinada pelo
LinearLayout
peso = 1. Isso significa que a vista do espaçador se estenderá o máximo possível na direção (orientação) doLinearLayout
.Observe que você deve usar
android.widget.Space
ou, emandroid.support.v4.widget.Space
vez de,View
se o seu nível de API e / ou dependências permitirem.Space
consegue o trabalho de maneira mais barata, porque apenas mede e não tenta desenhar nada do queView
faz; também é mais expressivo transmitir a intenção.fonte
Solução real para o caso:
android:layout_weight="1"
para TextView, e seu botão se move para a direita!fonte
Sei que esta pergunta foi feita há algum tempo, mas já fiz isso antes e permite mais controle ao alinhar itens. Você acabou de aninhar outro
LinearLayout
que conterá seu botão dentro dele. Você pode alterar a gravidade do layout do botão e fazê-lo ir para a direita enquanto o botãoTextView
ainda estiver à esquerda.Tente este código:
Pode ser necessário brincar com o preenchimento no layout aninhado para que ele atue como você deseja.
fonte
tente este
fonte
Como mencionado algumas vezes antes: Para alternar de LinearLayout para RelativeLayout funciona, mas você também pode resolver o problema em vez de evitá-lo. Use as ferramentas fornecidas pelo LinearLayout: Dê ao TextView um peso = 1 (veja o código abaixo), o peso do seu botão deve permanecer 0 ou nenhum. Nesse caso, o TextView ocupará todo o espaço restante, que não é usado para exibir o conteúdo do seu TextView ou ButtonView e pressiona o botão para a direita.
fonte
RelativeLayout
Devido a problemas de memória, já que osRelativeLayout
consome muito mais memória do queLinearLayout
Você precisa adicionar gravidade ao layout e não ao botão; a gravidade nas configurações do botão é para Texto dentro do botão
fonte
Isto irá resolver o seu problema
fonte
Se você não quiser ou não puder usar o RelativeLayout, poderá quebrar o botão em um LinearLayout com orientação "vertical" e largura "fill_parent".
Isso ocorre porque, se a orientação do LinearLayout for horizontal, a gravidade afetará apenas as vistas verticalmente. E se a orientação for 'vertical', a gravidade afetará apenas as vistas horizontalmente. Veja aqui para mais detalhes sobre a explicação da orientação / gravidade do LinearLayout.
fonte
Basta adicionar android: gravity = "right" neste layout pai da linha, isso funcionará.
fonte
Eu usei um layout semelhante com 4
TextView
s. DoisTextView
s devem estar alinhados à esquerda e doisTextView
s devem estar alinhados à direita. Então, aqui está a minha solução, se você quiser usarLinearLayouts
sozinho.fonte
Você pode usar RelativeLayout ou definir gravity = "right" no layout pai do seu botão.
fonte
Eu sei que isso é antigo, mas aqui está outro em um Layout Linear:
Observe o layout_gravity em vez de apenas a gravidade.
fonte
center_vertical|bottom|top
? Eles parecem gravidades de alinhamento exclusivas para mim.Você deve usar o Relativelayout em vez de Linearlayout como layout principal. Se você usar o Relativelayout como principal, manipule facilmente o botão no lado direito, porque o layout relativo nos fornece alinharParent direito, esquerdo, superior e inferior.
fonte
Use a largura do layout no botão como o android: layout_width = "75dp"
fonte