studio que linearlayout español elementos ejemplos centrar botones boton amontonados alinear android listview layout alignment

que - Android: ¿Cómo se puede alinear un botón en la parte inferior y la vista de lista de arriba?



relativelayout android ejemplos (7)

@jclova una cosa más que puedes hacer es usar layout-below=@+id/listviewid en el diseño relativo

Quiero tener un botón en la parte inferior de la lista.

Si uso relativeLayout / FrameLayout, se alinea pero listView baja a muy bajo.

(Detrás del botón en la parte inferior)

FrameLayout:

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="wrap_content" /> <FrameLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentBottom="true"> <Button android:id="@+id/btnButton" android:text="Hello" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" /> </FrameLayout> </FrameLayout>

Disposición relativa:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" /> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true"> <Button android:id="@+id/btnButton" android:text="Hello" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" /> </RelativeLayout> </RelativeLayout>

Los dos códigos anteriores solo funcionan como la primera imagen. Lo que quiero es una segunda imagen.

¿Alguien puede ayudar?

Gracias.


El propósito de FrameLayout es superponer cosas una encima de la otra. Esto no es lo que quieres.

En su ejemplo de RelativeLayout , establece el alto y el ancho de MATCH_PARENT en MATCH_PARENT esto hará que ocupe la misma cantidad de espacio que su elemento principal, y así ocupará todo el espacio de la página (y cubre el botón).

Pruebe algo como:

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0"/> </LinearLayout>

El layout_weight dicta cómo se layout_weight el espacio extra. El Button no desea estirar más allá del espacio que requiere, por lo que tiene un peso de 0. ListView desea ocupar todo el espacio adicional, por lo que tiene un peso de 1.

Podrías lograr algo similar usando RelativeLayout , pero si son solo estos dos elementos, entonces creo que LinearLayout es más simple.


En su altura de diseño relativa, listview es match_parent que es fill_parent (para 2.1 y anterior) así que la mejor solución es si desea usar el diseño relativo. Primero declare su botón y luego su vista de lista, haga una vista de lista como arriba. quieres el botón siempre en la parte inferior y luego alinéeloParentBottom .. El fragmento es

<RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/rl1"><Button android:layout_width="MATCH_PARENT" android:layout_height="WRAP_CONTENT" /><ListView android:layout_width="MATCH_PARENT" android:layout_height="0" android:layout_above="@id/listview"/></RelativeLayout>

Esto evita que su vista de lista tome un lugar completo y haga que su botón aparezca.


Estoy usando Xamarin Android, y mi requisito es exactamente el mismo que William T. Mallard, arriba, es decir, un ListView con 2 botones uno al lado del otro. La solución es que esta respuesta no funcionó en Xamarin Studio; sin embargo, cuando configuré el alto de ListView en "0dp", el ListView simplemente desapareció.

Mi código Xamarin Android en funcionamiento es el siguiente:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@+id/ListView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_above="@+id/ButtonsLinearLayout" /> <LinearLayout android:id="@id/ButtonsLinearLayout" android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="horizontal" android:layout_alignParentBottom="true"> <Button android:id="@+id/Button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> <Button android:id="@+id/Button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> </RelativeLayout>

Alineé ButtonsLinearLayout en la parte inferior de la pantalla y configuré ListView para que esté arriba de ButtonsLinearLayout.


Necesitaba dos botones uno al lado del otro en la parte inferior. android:layout_height="0dp" un diseño lineal horizontal, pero la asignación de android:layout_height="0dp" y android:layout_weight="0" para el diseño lineal de los botones no funcionó. Asignar android:layout_height="wrap_content" para solo el diseño lineal de los botones. Aquí está mi diseño de trabajo:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/new_button" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="New" /> <Button android:id="@+id/suggest_button" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Suggest" /> </LinearLayout> </LinearLayout>


RelativeLayout ignorará sus android:layout_width hijos android:layout_width o android:layout_height , si los niños tienen atributos que definen correctamente sus valores left y right o top e bottom , respectivamente.

Para lograr el resultado en la imagen de la derecha, mostrando la lista sobre el botón, su diseño debe verse así:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@android:id/button1" android:layout_alignParentTop="true"/> <Button android:id="@android:id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="@android:string/ok"/> </RelativeLayout>

La clave es definir android:layout_alignParentTop (define el valor top ) y android:layout_above (define el valor bottom ) en su RecyclerView . De esta forma, RelativeLayout ignorará android:layout_height="match_parent" , y el RecyclerView se colocará sobre el Button .

Además, asegúrese de buscar en android:layout_alignWithParentIfMissing , si tiene un diseño más complejo y aún necesita definir estos valores.


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff" > <ListView android:id="@+id/ListView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"> </ListView> <FrameLayout android:id="@+id/FrameLayout01" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button" android:layout_gravity="center_horizontal"> </Button> </FrameLayout> </LinearLayout>

Aquí está el diseño que estás buscando. Intentalo.