RelativeView 卡在布局顶部
RelativeView stuck at top of layout
我试图在我的 RelativeLayout 中放置一个 ImageView,它位于屏幕下方大约 3/4 的位置,但是一旦我将 ImageView 添加到 RelativeLayout,布局和图像就会捕捉到顶部屏幕,我不确定如何从那里移动它。
这是我将 ImageView 添加到 RelativeLayout 时的样子
但我希望它位于 "Ready" 按钮正上方
这是.xml
<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: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>
将 relative layout
和 button
以 linear layout
方向垂直包装并根据需要调整重力
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom"
android:orientation="vertical">
<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: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>
</LinearLayout>
出现这种情况是因为您对 RelativeLayout 了解不够。
放置在 RelativeLayout 内的所有视图将自动放置在 RelativeLayout 左上角的彼此之上。
如果你想移动它,你需要'align'它。
<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 代码有两点奇怪。
为什么要将高度为 80dp 的 ImageView 放在高度为 74dp 的 RelativeLayout 中?根本就是故意找麻烦。
如果您已经在使用 ConstraintLayout,为什么还要使用 RelativeLayout?使用 ConstraintLayout 的主要好处之一是您不必使用嵌套布局。借助 ConstraintLayout 的强大功能和控制力,您实际上可以将几乎所有视图重新排列为您想要的任何设计,而无需在其中嵌套其他布局(如 RelativeLayout)。
我只是猜测您正在使用 ConstraintLayout,因为您在 RelativeLayout 中使用了 app:layout_constraintStart_toStartOf
,而这些类型的 'constraints' 仅存在于 ConstraintLayout。
因此,如果您已经在使用 ConstraintLayout 并且您的 Ready Button 位于 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 放置在就绪按钮上方。
我试图在我的 RelativeLayout 中放置一个 ImageView,它位于屏幕下方大约 3/4 的位置,但是一旦我将 ImageView 添加到 RelativeLayout,布局和图像就会捕捉到顶部屏幕,我不确定如何从那里移动它。
这是我将 ImageView 添加到 RelativeLayout 时的样子
但我希望它位于 "Ready" 按钮正上方
这是.xml
<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: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>
将 relative layout
和 button
以 linear layout
方向垂直包装并根据需要调整重力
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom"
android:orientation="vertical">
<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: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>
</LinearLayout>
出现这种情况是因为您对 RelativeLayout 了解不够。
放置在 RelativeLayout 内的所有视图将自动放置在 RelativeLayout 左上角的彼此之上。
如果你想移动它,你需要'align'它。
<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 代码有两点奇怪。
为什么要将高度为 80dp 的 ImageView 放在高度为 74dp 的 RelativeLayout 中?根本就是故意找麻烦。
如果您已经在使用 ConstraintLayout,为什么还要使用 RelativeLayout?使用 ConstraintLayout 的主要好处之一是您不必使用嵌套布局。借助 ConstraintLayout 的强大功能和控制力,您实际上可以将几乎所有视图重新排列为您想要的任何设计,而无需在其中嵌套其他布局(如 RelativeLayout)。
我只是猜测您正在使用 ConstraintLayout,因为您在 RelativeLayout 中使用了 app:layout_constraintStart_toStartOf
,而这些类型的 'constraints' 仅存在于 ConstraintLayout。
因此,如果您已经在使用 ConstraintLayout 并且您的 Ready Button 位于 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 放置在就绪按钮上方。