Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo crear un formulario de entrada de dos columnas en Android?

Quiero crear un formulario de entrada de dos columnas ordenado como este:

Http://img31.imageshack.us/img31/115/addnew2.png

Mi código de diseño xml hasta ahora:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.25" android:text="@string/lblTitle" /> <EditText android:id="@+id/txtTitle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.75" android:ems="10" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.25" android:text="@string/lblAuthor" /> <EditText android:id="@+id/txtAuthor" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.75" android:ems="10" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.25" android:text="@string/lblPublisher" /> <EditText android:id="@+id/txtPublisher" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.75" android:ems="10" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.25" android:text="@string/lblIsbn" /> <EditText android:id="@+id/txtIsbn" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.75" android:ems="10" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <View android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.25" /> <Button android:id="@+id/btnSubmit" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.375" android:text="@string/submit" /> <Button android:id="@+id/btnCancel" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.375" android:text="@string/cancel" /> </LinearLayout> </LinearLayout> 

Puedes ver que usé LinearLayout utilizando layout_weight & layout_width = "0dp" truco para hacer que la división de dos columnas se vea ordenada. En código HTML, podemos usar con% width size. Pero en el diseño de Android xml, no hay% -value para layout_width. Quiero evitar codificados dp valores para el ancho de columna. ¿Es posible en android?

Hasta ahora eso es lo mejor que puedo hacer. Ahora quiero cambiar el tamaño del cuadro de texto ISBN para que sea más pequeño (50% menos el tamaño actual). Pero no puedo cambiar el tamaño de la anchura del cuadro de texto ya que layout_width debe ser "0dp" para que layout_weight funcione. También quiero hacer lo mismo con el tamaño de botón Enviar y Cancelar.

Me pregunto si el uso de LinearLayout es una forma correcta de crear forma de entrada ordenadamente en android. ¿Podría TableLayout mejor para esto? Escuché que no se puede cambiar el layout_width de la vista secundaria en TableLayout.

Hay algunas personas aquí me recomiendan usar RelativeLayout, lo probé pero no soporta layout_weight.

  • Cambiar el color de la flecha desplegable de Spinner en XML
  • SetSystemUiVisibility (SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) no funciona
  • Imagen que se estira cuando se muestra en la imagen redondeada
  • Android: layout_weight = "33" cómo ha ido-> visible visible-> ido efecto esto?
  • Vista de lista de fondo de pie de página en Android 2.3.3
  • Android: cómo hacer crecer una vista para llenar el espacio disponible?
  • Haga que EditText crezca a medida que se llena
  • Diferencia entre android: y app: prefix en Android XML?
  • 2 Solutions collect form web for “Cómo crear un formulario de entrada de dos columnas en Android?”

    De acuerdo, descubrí el camino con LinearLayout. El truco consiste en envolver las vistas que desea cambiar el tamaño con LinearLayout. Entonces, el ancho de View se puede ajustar usando: android: layout_width o android: propiedad ems.

    Aquí está el código xml:

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.25" android:text="@string/lblTitle" /> <EditText android:id="@+id/txtTitle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.75" android:ems="10" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.25" android:text="@string/lblAuthor" /> <EditText android:id="@+id/txtAuthor" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.75" android:ems="10" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.25" android:text="@string/lblPublisher" /> <EditText android:id="@+id/txtPublisher" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.75" android:ems="10" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="0.25" android:text="@string/lblIsbn" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.75" android:orientation="horizontal" > <EditText android:id="@+id/txtIsbn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="5" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <View android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.25" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.75" android:orientation="horizontal" > <Button android:id="@+id/btnSubmit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="5" android:text="@string/submit" /> <Button android:id="@+id/btnCancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="5" android:text="@string/cancel" /> </LinearLayout> </LinearLayout> </LinearLayout> 

    También debe considerar gridLayout , que puede utilizarse (mediante una biblioteca de android) en API7 +.

    Aquí hay un enlace: http://android-developers.blogspot.com/2011/11/new-layout-widgets-space-and-gridlayout.html

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.