我尝试将视图设置在第一个视图的右侧,并将它们底部对齐在RelativeLayout中。
以下代码在我看来应该可以正常工作。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="300dp"
android:background="#999999"
android:padding="10dp" >
<View
android:id="@+id/v1"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_centerInParent="true"
android:background="#FFFFFF" />
<View
android:id="@+id/v2"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignBottom="@id/v1"
android:layout_toRightOf="@id/v1"
android:background="#FF0000" />
</RelativeLayout>
但结果并不是我所期望的。
这里有什么问题?
为了清楚我的期望:两个立方体应该彼此底部对齐,红色立方体应该在白色立方体的右边(外部)。
修改
我发现了这个问题。它不是这个布局,而是包含它的父列表(它是一个专有的HorizontalListView)。它似乎以某种方式调整其子视图的大小并导致问题。
答案 0 :(得分:1)
它对我有用。我的猜测是,无论你正在测试什么,sp都是从默认的sp = dp缩小。这将使你的dp填充推动块,因为灰色和白色块之间的可用空间量是:
(300-200)/2 - 10 = 40
你的红色区块是50。
如果你想要更一致的结果使用dp,因为sp会根据偏好进行缩放,通常用于文本缩放。
答案 1 :(得分:1)
请勿使用sp作为单位。请尝试使用dp(设备像素)。这将考虑设备。在您的情况下,图像没有正确缩放,因此这个结果。您还可以在视图v2上设置重力。类似的东西:
android:gravity="botton|right"
或者您也可以尝试将基线设置为:
android:layout_alignBaseline="@+id/v1"
并将alignRight设置为:
android:layout_alignRight="@+id/v1"
答案 2 :(得分:0)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="300dp"
android:background="#999999"
android:padding="10dp" >
<View
android:id="@+id/v1"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_centerInParent="true"
android:background="#FFFFFF" />
<View
android:id="@+id/v2"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="#FF0000"
android:layout_alignBottom="@+id/v1"
android:layout_alignBaseline="@+id/v1"
android:layout_alignRight="@+id/v1"/>
</RelativeLayout>
我是对的吗? ;)