studio soporte para pantallas multiples layouts layout_width español ejemplos ejemplo diferentes developers botones alinear android android-layout

soporte - relativelayout android studio español



RelativeLayout está tomando pantalla completa para wrap_content (6)

Buenas respuestas Ahora bien, si no tienes layout_alignParentBottom="true" y sigues teniendo este problema, ten cuidado con android:background="@drawable/bkgnd" donde bkgnd es un problema.

¿Por qué FOOBARZ se distribuye completamente en la parte inferior cuando no hay elementos layout_height="fill_parent" en otras palabras, todos los elementos son wrap_content para la altura?

<?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="wrap_content"> <TextView android:id="@+id/feed_u" android:layout_width="50dip" android:layout_height="50dip" android:layout_marginLeft="5dip" android:scaleType="centerCrop" android:drawableTop="@android:drawable/presence_online" android:text="U" /> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/feed_u"> <ImageView android:id="@+id/feed_h" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/btn_minus" /> <ImageView android:id="@+id/feed_ha" android:layout_toLeftOf="@id/feed_h" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/btn_plus" /> <TextView android:id="@+id/feed_t" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Title"> </TextView> <TextView android:id="@+id/feed_a" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Band" android:layout_below="@id/feed_t"> </TextView> <TextView android:id="@+id/feed_s" android:layout_below="@id/feed_a" android:text="S" android:layout_height="wrap_content" android:layout_width="wrap_content"> </TextView> <TextView android:id="@+id/feed_tm" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:text="FOOBARZ" android:layout_height="wrap_content" android:layout_width="wrap_content"> </TextView> </RelativeLayout> </RelativeLayout>


Del documento RelativeLayout :

Descripción de la clase

Un diseño donde las posiciones de los niños se pueden describir en relación entre sí o con el padre.

Tenga en cuenta que no puede tener una dependencia circular entre el tamaño de RelativeLayout y la posición de sus hijos. Por ejemplo, no puede tener un RelativeLayout cuya altura esté configurada en WRAP_CONTENT y un elemento secundario configurado en ALIGN_PARENT_BOTTOM

Documentación de clase

Cuál es exactamente tu caso. RelativeLayout no puede hacer eso.


Ha establecido RelativeLayout en "wrap_content" y TextView en android:layout_alignParentBottom="true" , por lo que automáticamente intenta estirar RelativeLayout hacia la parte inferior. No use tales dependencias con el diseño relativo, ya que puede contar como "dependencias circulares".

De los documentos para RelativeLayout :

Tenga en cuenta que no puede tener una dependencia circular entre el tamaño de RelativeLayout y la posición de sus hijos. Por ejemplo, no puede tener un RelativeLayout cuya altura esté configurada en WRAP_CONTENT y un elemento secundario configurado en ALIGN_PARENT_BOTTOM .

Intenta alinear tu TextView con algo que no sea RelativeLayout padre, pero ten cuidado también con este problema:
Dependencias circulares, necesita ayuda con el código exacto

Alternativamente, intente agregar diseños internos más sofisticados.


No estoy seguro de por qué la forma clara y obvia de lograr esto no se ha publicado todavía. Esta solución de rendimiento funciona para cualquier View MyView con una altura conocida.

Envuelva su RelativeLayout con la altura wrap_content en FrameLayout:

<!-- width here should constrain RelativeLayout --> <FrameLayout android:layout_width="@dimen/my_layout_width" android:layout_height="wrap_content"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" /> <MyView ... android:layout_gravity="bottom" /> </FrameLayout>

Solo tenga en cuenta que la vista en la parte inferior de FrameLayout estará encima de su contenido RelativeLayout , por lo que deberá agregar relleno al final de ese diseño para acomodarlo. Si desea que la vista sea de altura variable, puede Subclase FrameLayout para agregar relleno en el código según la altura de vista medida, o simplemente cambie FrameLayout a LinearLayout vertical si no está preocupado por el rendimiento, es decir, no es una lista artículo, o las vistas son relativamente livianas.


No utilice las propiedades de tipo alight_Parent con las vistas secundarias

Puede usar el diseño de cuadros en lugar de RelativeLayout con la gravedad respectiva

<FrameLayout android:layout_height="wrap_content" android:layout_width="wrap_content"> <TextView android:layout_gravity="bottom|right" android:text="Hello " android:layout_height="wrap_content" android:layout_width="wrap_content"> </TextView> </FrameLayout>


Para aquellos que buscan una solución a esto, como yo lo hice, puedes usar FrameLayout lugar de RelativeLayout .

Luego puede establecer la gravedad del objeto deseado en la parte inferior derecha como se muestra a continuación

<TextView android:layout_gravity="bottom|right" android:text="FOOBARZ" android:layout_height="wrap_content" android:layout_width="wrap_content"> </TextView>