Это происходит потому, что вы недостаточно хорошо понимаете RelativeLayout.
Все виды, размещенные внутри RelativeLayout, будут автоматически размещены друг над другом в верхнем левом углу RelativeLayout.
Если вы хотите переместить его, вам нужно «выровнять» его.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="74dp"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@+id/readyButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<ImageView
android:id="@+id/player1FlipAvatar"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_alignParentBottom="true"
android:contentDescription="@string/title_activity_flip_coin_lobby"
tools:ignore="ContentDescription"
tools:layout_editor_absoluteX="55dp"
tools:layout_editor_absoluteY="40dp"
tools:src="@drawable/defaultavatarmale" />
</RelativeLayout>
Выровняв ImageView к нижней части RelativeLayout, он должен быть размещен над кнопкой «Готово», ЕСЛИ ваш RelativeLayout заканчивается прямо над кнопкой «Готово».
Если вы хотите центрировать ImageView, вы можете добавить android:layout_centerHorizontal="true"
.
Вы можете узнать больше о RelativeLayout здесь: https://developer.android.com/guide/topics/ui/layout/relative
Однако в вашем xml-коде есть две любопытные вещи.
Почему вы помещаете ImageView высотой 80dp в RelativeLayout высотой 74dp? Это в основном намеренно ищет проблемы.
Почему вы используете RelativeLayout, если вы уже используете ConstraintLayout? Одним из основных преимуществ использования ConstraintLayout является то, что вам не нужно использовать вложенные макеты. С мощью и контролем ConstraintLayout, вы можете фактически переставить почти все виды в любой дизайн, не вкладывая в него другой макет, такой как RelativeLayout.
Я просто предполагаю, что вы используете ConstraintLayout, потому что вы использовали app:layout_constraintStart_toStartOf
в RelativeLayout, и эти типы «ограничений» существуют только для ConstraintLayout.
Так что, если вы уже используете ConstraintLayout и ваша кнопка Ready находится внутри ConstraintLayout, вам просто нужно сделать:
<ImageView
android:id="@+id/player1FlipAvatar"
android:layout_width="80dp"
android:layout_height="80dp"
app:layout_constraintBottom_toTopOf="@+id/readyButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:contentDescription="@string/title_activity_flip_coin_lobby"
tools:ignore="ContentDescription"
tools:layout_editor_absoluteX="55dp"
tools:layout_editor_absoluteY="40dp"
tools:src="@drawable/defaultavatarmale" />
Вам не нужен RelativeLayout, чтобы поместить ImageView над кнопкой Ready.