Как я могу установить RelativeLayout на экран?

Я сталкиваюсь с проблемами, которые вызывают экран за пределами экрана в RelativeLayout . ImageView не делает масштабирование изображения, чтобы дать кнопке видимое место.

Что у меня есть:

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

Что я хочу:

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

Код:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str" android:textAppearance="@android:style/TextAppearance.Small" android:textColor="?android:attr/textColorTertiary" android:layout_centerHorizontal="true" /> <ru.mw.widget.DrawableImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView" android:adjustViewBounds="true" android:layout_centerHorizontal="true" android:scaleType="centerCrop" /> <Button android:id="@+id/processButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" /> 

Проблема при изменении ориентации экрана: если я использую метод Аруна С Томаса в ландшафтном режиме, все в порядке, но в портретном режиме у меня это (изображение обрезано левыми / правыми краями):

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

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

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str" android:textColor="?android:attr/textColorTertiary" android:textAppearance="@android:style/TextAppearance.Small" android:layout_centerHorizontal="true" /> <ru.mw.widget.DrawableImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_below="@+id/textView" android:layout_centerHorizontal="true" android:adjustViewBounds="true" android:scaleType="centerCrop" android:layout_above="@+id/processButton" /> <Button android:id="@+id/processButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" /> </RelativeLayout> 

Это решение

Теперь для достижения Обновленного требования добавьте вышеприложенный макет к папке layout-land в res (если у вас нет одной папки с именем layout-land in res ), теперь в папке layout по умолчанию добавьте этот xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" > <ru.mw.widget.DrawableImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:adjustViewBounds="true" /> <Button android:id="@+id/processButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" android:text="@string/str" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/imageView" android:layout_centerHorizontal="true" android:text="@string/str" android:textColor="?android:attr/textColorTertiary" /> </RelativeLayout> 

Это оно.

Попробуйте добавить android:layout_alignParentBottom="true" к кнопке:

 <Button android:id="@+id/processButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" /> 
  1. Выровняйте кнопку до нижней части родителя, используя layout_alignParentBottom="true" .
  2. Оберните ImageView между TextView и Button

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str" android:textAppearance="@android:style/TextAppearance.Small" android:textColor="?android:attr/textColorTertiary" android:layout_centerHorizontal="true" /> <Button android:id="@+id/processButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" /> <ru.mw.widget.DrawableImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView" android:layout_above="@+id/processButton" android:adjustViewBounds="true" android:layout_centerHorizontal="true" android:scaleType="centerCrop" /> </RelativeLayout>