如何在屏幕底部对齐视图,但也在相对布局中的其他视图下方对齐
Posted
技术标签:
【中文标题】如何在屏幕底部对齐视图,但也在相对布局中的其他视图下方对齐【英文标题】:how to align view at the bottom of the screen but also below other view in relative layout 【发布时间】:2021-06-30 14:05:17 【问题描述】:我希望 imageView 始终位于屏幕底部,但我也希望它位于 LinearLayou 视图下方,这样它们就不会相互重叠,并且图像可以根据屏幕更改其大小。
这就是我正在做的事情
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:background="@color/background_color"
android:paddingTop="@dimen/main_padding"
android:paddingRight="@dimen/main_padding"
android:paddingLeft="@dimen/main_padding"
android:layout_
tools:context=".welcomeActivity">
<TextView
android:id="@+id/textView_welcome"
android:paddingTop="8dp"
android:paddingBottom="5dp"
android:layout_
android:layout_
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="20dp"
android:fontFamily="@font/great_vibes"
android:layout_marginRight="20dp"
android:background="@drawable/actionbar_background"
android:gravity="center"
android:text="@string/who_am_i"
android:textColor="@color/text_color_white"
android:textSize="44sp" />
<LinearLayout
android:layout_marginTop="50dp"
android:layout_
android:orientation="vertical"
android:id="@+id/lisearLayout_welcome"
android:layout_centerHorizontal="true"
android:layout_below="@+id/textView_welcome"
android:layout_>
<androidx.cardview.widget.CardView
style="@style/MyCardView"
app:cardCornerRadius="40dp"
android:layout_
android:id="@+id/customerButton"
android:layout_>
<RelativeLayout
android:layout_
android:layout_>
<TextView
android:layout_
android:layout_centerInParent="true"
android:text="@string/customer"
android:textSize="44sp"
android:fontFamily="@font/great_vibes"
android:textColor="@color/button_color_black1"
android:layout_/>
</RelativeLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
style="@style/MyCardView"
app:cardCornerRadius="40dp"
android:layout_
android:id="@+id/employButton"
android:layout_>
<RelativeLayout
android:layout_
android:layout_>
<TextView
android:layout_
android:layout_centerInParent="true"
android:text="@string/employ"
android:fontFamily="@font/great_vibes"
android:textSize="44sp"
android:textColor="@color/button_color_black1"
android:layout_/>
</RelativeLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
<ImageView
android:layout_marginTop="5dp"
android:id="@+id/image_welcome"
android:layout_
android:layout_centerHorizontal="true"
android:layout_below="@+id/lisearLayout_welcome"
android:layout_alignParentBottom="true"
android:src="@drawable/ic_french_fries"
android:layout_/>
</RelativeLayout>
看到底部和图像之间的黄色间隙,这就是我不想要的。
任何建议将不胜感激
【问题讨论】:
【参考方案1】:我在顶部添加了 RelativeLayout
属性 alignPatentBottom="true"
现在你的薯条应该在底部。 :) 在我的模拟器中一切正常。如果可行,很高兴收到一些反馈?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:background="@color/background_color"
android:paddingTop="@dimen/main_padding"
android:paddingRight="@dimen/main_padding"
android:paddingLeft="@dimen/main_padding"
android:layout_
tools:context=".welcomeActivity"
android:layout_alignParentBottom="true">
<TextView
android:id="@+id/textView_welcome"
android:paddingTop="8dp"
android:paddingBottom="5dp"
android:layout_
android:layout_
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="20dp"
android:fontFamily="@font/great_vibes"
android:layout_marginRight="20dp"
android:background="@drawable/actionbar_background"
android:gravity="center"
android:text="@string/who_am_i"
android:textColor="@color/text_color_white"
android:textSize="44sp" />
<LinearLayout
android:layout_marginTop="50dp"
android:layout_
android:orientation="vertical"
android:id="@+id/lisearLayout_welcome"
android:layout_centerHorizontal="true"
android:layout_below="@+id/textView_welcome"
android:layout_>
<androidx.cardview.widget.CardView
style="@style/MyCardView"
app:cardCornerRadius="40dp"
android:layout_
android:id="@+id/customerButton"
android:layout_>
<RelativeLayout
android:layout_
android:layout_>
<TextView
android:layout_
android:layout_centerInParent="true"
android:text="@string/customer"
android:textSize="44sp"
android:fontFamily="@font/great_vibes"
android:textColor="@color/button_color_black1"
android:layout_/>
</RelativeLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
style="@style/MyCardView"
app:cardCornerRadius="40dp"
android:layout_
android:id="@+id/employButton"
android:layout_>
<RelativeLayout
android:layout_
android:layout_>
<TextView
android:layout_
android:layout_centerInParent="true"
android:text="@string/employ"
android:fontFamily="@font/great_vibes"
android:textSize="44sp"
android:textColor="@color/button_color_black1"
android:layout_/>
</RelativeLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
<ImageView
android:id="@+id/image_welcome"
android:layout_
android:layout_
android:layout_below="@+id/lisearLayout_welcome"
android:layout_alignParentBottom="true"
android:layout_marginTop="5dp"
android:layout_marginBottom="0dp"
android:src="@drawable/ic_french_fries" />
</RelativeLayout>
【讨论】:
那不行,还有那个差距【参考方案2】:删除ImageView
中的android:layout_below="@+id/lisearLayout_welcome"
并将android:layout_above="@id/image_welcome"
添加到LinearLayout
。
通过这种方式,您将可用空间分配给LinearLayout
,而不是在您的代码中,您将可用空间分配给ImageView
。
使用类似的东西:
<RelativeLayout>
<TextView/>
<LinearLayout
android:layout_above="@id/image_welcome"
android:layout_centerHorizontal="true"
android:layout_below="@+id/textView_welcome">
<!-- ... -->
</LinearLayout>
<ImageView
android:layout_marginTop="5dp"
android:id="@+id/image_welcome"
android:layout_
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:src="@drawable/..."
android:layout_/>
</RelativeLayout>
在纵向模式下使用vertical
在LinearLayout 中应用不同的方向,在横向模式下使用horizontal
。
【讨论】:
我不想让视图滚动,有没有其他办法 @TehleelMir 是的,这取决于您想要实现的目标。例如卡片并排的不同布局? 是的,我希望所有视图都可见且不重叠 @TehleelMir 只需使用答案中报告的相同布局并更改 LinearLayout 的方向(纵向模式为垂直,横向模式为水平)以上是关于如何在屏幕底部对齐视图,但也在相对布局中的其他视图下方对齐的主要内容,如果未能解决你的问题,请参考以下文章