如何在 RelativeLayout 中使两个元素底部对齐?
how to make two elements bottom align in RelativeLayout?
RelativeLayout 中的一个 ImageView 和三个 TextView。
我想要的是使 imageview 和 '6.4MB' TextView 底部对齐。
activity_main.xml
<RelativeLayout
android:layout_width="fill_parent"
android:layout_marginTop="15dp"
android:layout_height="match_parent">
<ImageView
android:src="@drawable/screenshot"
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/screenShot"
android:layout_alignParentLeft="true"
android:layout_marginRight="10dp"/>
<TextView
android:text="Video Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:textSize="23dp"
android:textColor="#000000"
android:id="@+id/videoName"
android:layout_toRightOf="@id/screenShot"
android:layout_alignParentTop="true"/>
<TextView
android:text="2021.05.19 · 5:11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:textSize="15dp"
android:textColor="#797675"
android:id="@+id/recordDate"
android:layout_toRightOf="@id/screenShot"
android:layout_below="@id/videoName"/>
<TextView
android:text="6.4 MB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:textSize="15dp"
android:textColor="#797675"
android:id="@+id/videoSize"
android:layout_toRightOf="@id/screenShot"
android:layout_below="@id/recordDate"
android:layout_alignBottom="@id/screenShot"
/>
</RelativeLayout>
android:layout_alignBottom="@id/screenShot" 不起作用。
有人可以帮忙吗?
Make 很简单,只需使用 LinearLayout 代替 RelativeLayout 替换代码,并在 linearLayout 中使用 weightSum。删除冗余代码并使其简短。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="10">
<ImageView
android:id="@+id/screenShot"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_alignParentLeft="true"
android:layout_marginRight="10dp"
android:layout_weight="2"
android:src="@drawable/screenshot" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="8"
android:orientation="vertical">
<TextView
android:id="@+id/videoName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:text="Video Name"
android:textColor="#000000"
android:textSize="23dp" />
<TextView
android:id="@+id/recordDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:text="2021.05.19 · 5:11"
android:textColor="#797675"
android:textSize="15dp" />
<TextView
android:id="@+id/videoSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:text="6.4 MB"
android:textColor="#797675"
android:textSize="15dp" />
</LinearLayout>
</LinearLayout>
<TextView
android:text="6.4 MB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:textSize="15dp"
android:textColor="#797675"
android:id="@+id/videoSize"
android:layout_below="@+id/screenShot"
/>
我没有完全理解您的要求,但是如果您想将 6.4 MB
文本放在 ImageView 下方,您需要更改 TextView 属性。
android:layout_alignBottom="@id/screenShot" does not work
因为您还添加了android:layout_below="@id/recordDate"
如果您将删除此 layout_below
属性 那么 layout_alignBottom
将按预期工作。
但是当您删除 layout_below
时,它可能看起来很奇怪。所以你必须根据那个做出改变
编辑
如果您不想删除 layout_below
,那么向底部添加重力也可能对您有用。因为这会将文本对齐到底部
android:gravity="bottom"
RelativeLayout 中的一个 ImageView 和三个 TextView。
我想要的是使 imageview 和 '6.4MB' TextView 底部对齐。
activity_main.xml
<RelativeLayout
android:layout_width="fill_parent"
android:layout_marginTop="15dp"
android:layout_height="match_parent">
<ImageView
android:src="@drawable/screenshot"
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/screenShot"
android:layout_alignParentLeft="true"
android:layout_marginRight="10dp"/>
<TextView
android:text="Video Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:textSize="23dp"
android:textColor="#000000"
android:id="@+id/videoName"
android:layout_toRightOf="@id/screenShot"
android:layout_alignParentTop="true"/>
<TextView
android:text="2021.05.19 · 5:11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:textSize="15dp"
android:textColor="#797675"
android:id="@+id/recordDate"
android:layout_toRightOf="@id/screenShot"
android:layout_below="@id/videoName"/>
<TextView
android:text="6.4 MB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:textSize="15dp"
android:textColor="#797675"
android:id="@+id/videoSize"
android:layout_toRightOf="@id/screenShot"
android:layout_below="@id/recordDate"
android:layout_alignBottom="@id/screenShot"
/>
</RelativeLayout>
android:layout_alignBottom="@id/screenShot" 不起作用。
有人可以帮忙吗?
Make 很简单,只需使用 LinearLayout 代替 RelativeLayout 替换代码,并在 linearLayout 中使用 weightSum。删除冗余代码并使其简短。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="10">
<ImageView
android:id="@+id/screenShot"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_alignParentLeft="true"
android:layout_marginRight="10dp"
android:layout_weight="2"
android:src="@drawable/screenshot" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="8"
android:orientation="vertical">
<TextView
android:id="@+id/videoName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:text="Video Name"
android:textColor="#000000"
android:textSize="23dp" />
<TextView
android:id="@+id/recordDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:text="2021.05.19 · 5:11"
android:textColor="#797675"
android:textSize="15dp" />
<TextView
android:id="@+id/videoSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:text="6.4 MB"
android:textColor="#797675"
android:textSize="15dp" />
</LinearLayout>
</LinearLayout>
<TextView
android:text="6.4 MB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:textSize="15dp"
android:textColor="#797675"
android:id="@+id/videoSize"
android:layout_below="@+id/screenShot"
/>
我没有完全理解您的要求,但是如果您想将 6.4 MB
文本放在 ImageView 下方,您需要更改 TextView 属性。
android:layout_alignBottom="@id/screenShot" does not work
因为您还添加了android:layout_below="@id/recordDate"
如果您将删除此 layout_below
属性 那么 layout_alignBottom
将按预期工作。
但是当您删除 layout_below
时,它可能看起来很奇怪。所以你必须根据那个做出改变
编辑
如果您不想删除 layout_below
,那么向底部添加重力也可能对您有用。因为这会将文本对齐到底部
android:gravity="bottom"