2010-11-15 28 views
51

Quiero poner un botón al lado de EditText y quiero que coincidan sus alturas.¿Cómo obtener la altura de un botón para que coincida con la altura de otro elemento?

Por ejemplo, desde el construido en el navegador de Android:

alt text

El botón Go es la misma altura que el campo EditarTexto. Sé que podría envolver ambas vistas en una vista de diseño principal y establecer ambas alturas para fill_parent, y eso las haría coincidir. Sin embargo, me gustaría hacer esto sin tener que dar un tamaño estático al diseño. Prefiero que EditText tome la altura que necesite en función del tamaño de la fuente y luego haga que el botón al lado coincida con la altura que pueda tener.

¿Es esto posible con un diseño xml?

+1

Esta pregunta debe actualizarse para incluir el nuevo ConstraintLayout. –

Respuesta

27

Tendrá que hacer el EditTextwrap_content en su altura y tener el Button solo fill_parent. Tendrá que tener ambos envueltos en un padre Layout. De esta forma están asociados con el mismo padre Layout.

Pruebe eso y vea cómo funciona eso, si me ayuda a hacerlo saber. Si no es así, quizás pueda darte un código que te ayude.

+0

Gracias por la oferta de ayuda, pero la respuesta de Falmarri funcionó perfectamente, así que estoy listo. Gracias de nuevo. – cottonBallPaws

+0

En realidad, después de intentar hacer esto sin una vista de contenedor, no pude hacer que el botón se alinee correctamente en el lado derecho del texto debido al problema que describí en respuesta a la respuesta de Falmarri. Usando su método, pude obtener el tamaño del botón y colocarlo correctamente, así que marcaré el suyo como la respuesta. – cottonBallPaws

57

Probablemente el EditText y el Button están dentro de un RelativeLayout. Establezca los atributos de diseño del botón en alignTop y alignBottom del EditText.

+2

Esto funcionó muy bien y no requiere envoltorio, muchas gracias. – cottonBallPaws

+2

¿Cómo obtendré EditText distribuido a la izquierda del botón? Intenté usar layout_toLeftOf = "el id del botón" en EditText, pero como el botón se declara después del EditText en el archivo xml, me sale un error que dice que el id del botón no existe. No puedo revertirlos porque tengo el mismo problema, el botón se refiere a la identificación de EditText para la alineación como describió. ¿Alguna sugerencia sobre cómo lidiar con esto? ¡Gracias – cottonBallPaws

15

Lo que desea es un diseño relativo. Un ejemplo con algunos comentarios es el siguiente

Comenzamos con este RelativeLayout como padre. Eso puede envolver todo el contenido. En ese padre colocamos 2 elementos, el botón y el texto de edición de su ejemplo.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

Comenzamos colocando el elemento Botón en la esquina superior derecha. Eso es lo que trata el layout_alignParentRight y layout_alignParentTop. De nuevo, este es el elemento más importante, por lo que dejaremos que envuelva todo el contenido usando wrap_content tanto para la altura como para el ancho.

<Button 
    android:id="@+id/Button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:text="some_text" /> 

Ahora el segundo elemento, el EDITTEXT que se quiere alinear el lado izquierdo de nuestro elemento anterior, utilice el ID de referencia con el parámetro layout_toLeftOf a lograr precisamente eso.

<EditText 
    android:id="@+id/EditText1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_toLeftOf="@+id/Button1" 
    android:hint="some_hint" 
    android:inputType="textCapWords" /> 

Cierre RelativeLayout y ahora renderice esto para ver lo que probablemente ya tenga.

</RelativeLayout> 

enter image description here

Desde el EDITTEXT es de menor altura que no coincide con el botón se coloca al lado de. La solución para eso es agregar algunos parámetros de diseño más.Los mágicos que está buscando son layout_alignBottom y layout_alignParentTop.

android:layout_alignBottom="@+id/Button1" 
    android:layout_alignParentTop="true" 

Agregue estos 2 y obtendrá su diseño correcto.

enter image description here

+0

no funcionará para el diseño lineal! –

+2

@farhan patel, por eso empiezo la explicación diciendo que necesitas un diseño relativo ;-) – hcpl

Cuestiones relacionadas