studio linearlayout layout_width gridlayout examples dinamico caracteristicas android layout android-layout

layout_width - linearlayout android caracteristicas



¿Cómo hacer que el diseño con Vista llene el espacio restante? (10)

Estoy diseñando la interfaz de usuario de mi aplicación. Necesito un diseño como este:

(<y> son botones). El problema es que no sé cómo asegurarme de que TextView llene el espacio restante, con dos botones de tamaño fijo.

Si uso fill_parent para Text View, no se puede mostrar el segundo botón (>).

¿Cómo puedo diseñar un diseño que se parece a la imagen?


Debe evitar el diseño relativo de anidamiento 2 ya que el diseño relativo siempre hace que 2 pasen para dibujar (contra 1 para cualquier otro tipo de diseño). Se vuelve exponencial cuando los anides. Debe usar el diseño lineal con ancho = 0 y peso = 1 en el elemento que desea llenar el espacio restante. Esta respuesta es mejor para el rendimiento y las prácticas. Recuerde: use la disposición relativa SÓLO cuando no tenga otra opción.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <Button android:id="@+id/prev_button" android:layout_width="80dp" android:layout_height="wrap_content" android:text="&lt;" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:ellipsize="end" android:singleLine="true" android:gravity="center" android:text="TextView" /> <Button android:id="@+id/next_button" android:layout_width="80dp" android:layout_height="wrap_content" android:text="&gt;" /> </LinearLayout> </LinearLayout>


En caso de que si <VISTA DE TEXTO> se coloque en LinearLayout, establezca la propiedad Layout_weight de <y> en 0 y 1 para TextView.
En el caso de RelativeLayout, alinee <y> a la izquierda y derecha y establezca "Diseño a la izquierda de" y "Diseño a la derecha de" la propiedad de TextView a los identificadores de <y>


Es simple Configurar el minWidth o minHeight, depende de lo que esté buscando, horizontal o vertical. Y para el otro objeto (el que desea llenar el espacio restante) establece un peso de 1 (establezca el ancho para envolver su contenido), por lo que llenará el resto del área.

<LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center|left" android:orientation="vertical" > </LinearLayout> <LinearLayout android:layout_width="80dp" android:layout_height="fill_parent" android:minWidth="80dp" > </LinearLayout>


Para aquellos que tienen el mismo problema con <LinearLayout...> como yo:

Es importante especificar android:layout_width="fill_parent" , no funcionará con wrap_content .

OTOH, puedes omitir android:layout_weight = "0" , no es obligatorio.

Mi código es básicamente el mismo que el código en https://.com/a/25781167/755804 (por Vivek Pandey)


Puede usar establecer el layout_width o el layout_width en 0dp (por la orientación que desea rellenar el espacio restante). Luego usa el layout_weight para que ocupe el espacio restante.


Si usa RelativeLayout , puede hacerlo de la siguiente manera:

<RelativeLayout android:layout_width = "fill_parent" android:layout_height = "fill_parent"> <ImageView android:id = "@+id/my_image" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_alignParentTop ="true" /> <RelativeLayout android:id="@+id/layout_bottom" android:layout_width="fill_parent" android:layout_height = "50dp" android:layout_alignParentBottom = "true"> <Button android:id = "@+id/but_left" android:layout_width = "80dp" android:layout_height = "wrap_content" android:text="&lt;" android:layout_alignParentLeft = "true"/> <TextView android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:layout_toLeftOf = "@+id/but_right" android:layout_toRightOf = "@id/but_left" /> <Button android:id = "@id/but_right" android:layout_width = "80dp" android:layout_height = "wrap_content" android:text="&gt;" android:layout_alignParentRight = "true"/> </RelativeLayout> </RelativeLayout>


Usando un ConstraintLayout , he encontrado algo así como

<Button android:id="@+id/left_button" android:layout_width="80dp" android:layout_height="48dp" android:text="&lt;" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@+id/left_button" app:layout_constraintRight_toLeftOf="@+id/right_button" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/right_button" android:layout_width="80dp" android:layout_height="48dp" android:text="&gt;" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" />

trabajos. La clave es establecer las restricciones de los bordes derecho, izquierdo, superior e inferior de forma adecuada, luego establecer el ancho y alto a 0dp y dejar que se 0dp cuenta de su propio tamaño.


puedes usar el atributo high layout_weight. A continuación puede ver un diseño donde ListView toma todo el espacio libre con los botones en la parte inferior:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context=".ConfigurationActivity" android:orientation="vertical" > <ListView android:id="@+id/listView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1000" /> <Button android:id="@+id/btnCreateNewRule" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="Create New Rule" /> <Button android:id="@+id/btnConfigureOk" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="Ok" /> </LinearLayout>


utiliza una Relativelayout para envolver LinearLayout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:round="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:text="&lt;"/> <TextView android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:layout_weight = "1"/> <Button android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:text="&gt;"/> </LinearLayout> </RelativeLayout>`


La respuesta de woodshy funcionó para mí, y es más simple que la respuesta de Ungureanu Liviu ya que no usa RelativeLayout . Le doy mi diseño para mayor claridad:

<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:layout_width = "80dp" android:layout_weight = "0" android:layout_height = "wrap_content" android:text="&lt;"/> <TextView android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:layout_weight = "1"/> <Button android:layout_width = "80dp" android:layout_weight = "0" android:layout_height = "wrap_content" android:text="&gt;"/> </LinearLayout>