studio - log android
Peso relativo relativo (4)
En un recurso XML de diseño, tengo 3 RelativeLayout (s) que están dentro de un RelativeLayout principal. La vista se mostrará verticalmente. Estos 3 RelativeLayout () se establecen uno al lado del otro, y quiero que llenen toda la pantalla, no importa cuál sea el tamaño de la pantalla. Mi, vista de diseño:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/backg"
>
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="@dimen/top_mr_image"
android:src="@drawable/temp" />
<RelativeLayout
android:id="@+id/r1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_below="@+id/imageView1"
android:layout_marginLeft="10dp"
android:background="@drawable/r1bg"
android:layout_weight="1"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="@dimen/txt_mr_right"
android:layout_marginRight="@dimen/txt_mr_right"
android:layout_marginTop="39dp"
android:text="S"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@id/textView1"
android:layout_marginLeft="@dimen/txt_mr_right"
android:layout_marginRight="@dimen/txt_mr_right"
android:text="T"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/r2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignTop="@+id/r1"
android:layout_toRightOf="@+id/r1"
android:layout_weight="1" >
</RelativeLayout>
<RelativeLayout
android:id="@+id/r3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignTop="@+id/r2"
android:layout_toRightOf="@+id/r2"
android:layout_weight="1" >
</RelativeLayout>
Puse weight=1
y layout_width=0dp
para cada relativoLayout y esta técnica funciona con botones, pensé que lo mismo ocurrirá con relativeLayout, parece que mis pensamientos estaban equivocados. ¿Alguna idea?
UPD1: He añadido una imagen de lo que me gustaría tener
La solución es muy simple. He estado buscando la distribución del peso en el diseño relativo.
Es un pequeño truco para todas estas situaciones amables.
Usa LinearLayout con android: orientación = "horizontal"
Puede usar LinearLayout Manager
orientado LinearLayout Manager
en la Recycler View
del Recycler View
, y colocar cada RelativeLayout
en cada elemento, de su Adapter
.
El enlace: ¿Cómo construir un ListView horizontal con RecyclerView?
Si sus RelativeLayouts
se configuran a un ancho y alto fijos, es decir, al tamaño de la Pantalla, que puede obtener de DisplayMatrics
, eso estará bien.
El enlace: Obtener ancho y alto de pantalla
Si los contenidos de sus RelativeLayouts son diferentes, entonces puede usar el método getItemViewType()
.
Por favor vea: ¿Cómo crear RecyclerView con múltiples vistas?
Codificación feliz :-)
RelativeLayouts no son compatibles con el peso. Debe usar un LinearLayout como contenedor principal si desea usar pesos.
RelativeLayout
no presta atención a android:layout_weight
. (Esa es una propiedad de LinearLayout.LayoutParams
, pero no de RelativeLayout.LayoutParams
.)
Debería poder obtener el diseño que desea con una jerarquía de vista mucho más simple. No está claro qué intenta hacer, ya que los dos últimos RelativeLayout
Referencia están vacíos. Si necesita una organización puramente vertical, sugeriría usar LinearLayout
lugar de RelativeLayout
.
EDITAR Según su edición, parece que desea un diseño horizontal de tres vistas compuestas, cada una de las cuales se puede hacer clic. Creo que algo como lo siguiente funcionará:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!-- First column -->
<LinearLayout
android:id="@+id/firstColumn"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="..." />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="text 1"
. . . />
</LinearLayout>
<!-- Second column -->
<LinearLayout . . . >
. . .
</LinearLayout>
</LinearLayout>
Si el contenido de los botones no es correcto, puede reemplazar las vistas de LinearLayout
segundo nivel con RelativeLayout
si eso ayuda a organizar mejor el diseño.