Android "layout_alignParentBottom" в относительной компоновке

Итак, у меня есть этот макет:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#FFFF00" android:minHeight="100dp" android:layout_gravity="bottom" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:textColor="#000000" android:background="#FF0000" android:text="Hello World" /> <Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignParentRight="true" android:text="button"/> </RelativeLayout> 

И вот как это выглядит:

Введите описание изображения здесь

Но если я добавлю android:layout_alignParentBottom="true" к кнопке, вот как это выглядит:

Введите описание изображения здесь

  1. Может ли кто-нибудь объяснить мне такое поведение?
  2. Как поместить мою кнопку внизу, не изменяя размер желтого макета и не добавляя тысячи макетов для обходных решений?

Solutions Collecting From Web of "Android "layout_alignParentBottom" в относительной компоновке"

Это решение работало для меня

 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#FFFF00" android:minHeight="100dp" android:orientation="horizontal" android:layout_gravity="bottom" > <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:textColor="#000000" android:background="#FF0000" android:text="Hello World" /> <Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="bottom|right" android:text="button"/> </FrameLayout> 

Этот один быстрый один экран

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="bottom" android:background="#FFFF00" android:minHeight="100dp" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:text="button" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignTop="@+id/button1" android:background="#000000" android:text="TextView" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button1" android:layout_alignParentLeft="true" android:background="#000000" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:orientation="vertical" > </LinearLayout> </RelativeLayout> 

Просто для проверки, можете ли вы удвоить минимальный размер макета и попробовать его снова? Или, возможно, вы можете установить исправление высоты макета и динамически изменять его из кода при необходимости.

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="bottom" android:background="#FFFF00" android:minHeight="100dp" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:textColor="#000000" android:background="#FF0000" android:text="Hello World"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:text="button" /> </RelativeLayout> 

Попробуйте этот код

К сожалению, ошибка все еще существует в новых версиях Android.

Во всяком случае, я обнаружил, что следующие могут решить эту проблему:

  1. Удалить minHeight RelativeLayout

  2. Вставка TextView в LinearLayout:

     <LinearLayout android:id="@+id/tvLayout" android:layout_alignParentTop="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:minHeight="100dp" android:gravity="top" > <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#FFFF00FF" android:text="Helo" /> </LinearLayout> 
  3. Удалить layout_alignParentBottom из Button и добавить layout_alignBottom = "@ id / tvLayout"

Теперь LinearLayout «контролирует» высоту RelativeLayout. Если высота TextView больше, чем minHeight 100dp, она будет расширяться.

И кнопка всегда будет выравнивать ее нижнюю до LinearLayout, равную RelativeLayout.