Si miras la imagen adjunta. Necesito que mi botón esté alineado a la derecha, pero por alguna razón no funciona con 'gravedad: correcto' ...
Aquí está mi código para ese diseño:
<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 qué no funciona?
android
android-layout
RUMANIA_ingeniero
fuente
fuente
Respuestas:
Use el siguiente código para eso
fuente
LinearLayout
Solución única Solo agregando una vista de espaciado simple:(Nadie parecía haber mencionado esta, solo soluciones de diseño múltiple más complicadas).
Tenga en cuenta la Vista "resaltada", no modifiqué nada más. Altura = 0 se asegura de que no sea visible. Ancho = 0 es porque el ancho está determinado por el
LinearLayout
basado en peso = 1. Esto significa que la vista del espaciador se estirará tanto como sea posible en la dirección (orientación) delLinearLayout
.Tenga en cuenta que debe usar
android.widget.Space
o enandroid.support.v4.widget.Space
lugar deView
si su nivel de API y / o dependencias lo permiten.Space
logra el trabajo de una manera más barata, porque solo mide y no intenta dibujar algo como loView
hace; También es más expresivo transmitir la intención.fuente
Solución real para el caso:
android:layout_weight="1"
para TextView, y su botón se mueve hacia la derecha!fuente
Sé que esta pregunta se hizo hace un tiempo, pero lo he hecho antes y permite un mayor control al alinear elementos. Si lo miras como programación web, ayuda. Simplemente anidas otro
LinearLayout
que contendrá tu botón dentro de él. A continuación, puede cambiar la gravedad del diseño del botón y hacer que vaya hacia la derecha mientrasTextView
todavía está a la izquierda.Prueba este código:
Puede que tenga que jugar con el relleno en el diseño anidado para que actúe como lo desee.
fuente
prueba este
fuente
Como se mencionó un par de veces antes: cambiar de LinearLayout a RelativeLayout funciona, pero también puede resolver el problema en lugar de evitarlo. Utilice las herramientas que proporciona LinearLayout: asigne a TextView un peso = 1 (consulte el código a continuación), el peso de su botón debe permanecer 0 o ninguno. En este caso, TextView ocupará todo el espacio restante, que no se utiliza para mostrar el contenido de TextView o ButtonView y empuja el botón hacia la derecha.
fuente
RelativeLayout
debido a problemas de memoria, ya queRelativeLayout
consume mucha más memoria queLinearLayout
Debe agregar gravedad al diseño, no el botón, la gravedad en la configuración del botón es para el texto dentro del botón
fuente
Esto resolverá su problema
fuente
Si no desea o no puede usar RelativeLayout, puede ajustar el botón en LinearLayout con orientación "vertical" y ancho "fill_parent".
Esto se debe a que si la orientación de LinearLayout es horizontal, la gravedad solo afectará las vistas verticalmente. Y si la orientación es 'vertical', la gravedad solo afectará las vistas horizontalmente. Consulte aquí para obtener más detalles sobre la explicación de orientación / gravedad de LinearLayout.
fuente
Simplemente agregue android: gravity = "right" esta línea de diseño principal, esto funcionará.
fuente
He usado un diseño similar con 4
TextView
s. DosTextView
s deben estar alineados a la izquierda y dosTextView
s deben estar alineados a la derecha. Entonces, aquí está mi solución, si quieres usarloLinearLayouts
solo.fuente
Puede usar RelativeLayout o establecer gravity = "right" en el diseño principal de su Botón.
fuente
Sé que esto es viejo, pero aquí hay otro en un diseño lineal que sería:
Tenga en cuenta el layout_gravity en lugar de solo la gravedad.
fuente
center_vertical|bottom|top
? Me parecen gravitaciones de alineación exclusivas.Debería utilizar la distribución relativa en lugar de la distribución lineal como diseño principal. Si usa Relativelayout como principal, maneje fácilmente el botón en el lado derecho porque el diseño relativo nos proporciona alinearParente a la derecha, izquierda, arriba y abajo.
fuente
Use el ancho de diseño en el botón como android: layout_width = "75dp"
fuente