1

我尝试将视图设置在第一个视图的右侧,并将它们底部对齐在 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>

但结果并不是我所期望的。

结果

这里有什么问题?

只是为了清楚我的期望:两个立方体应该底部相互对齐,红色立方体应该在白色立方体的右侧(外部)。

编辑:

我发现了问题。它不是这个布局,而是包含它的父列表(它是一个专有的 Horizo​​ntalListView)。它似乎以某种方式调整其子视图的大小,这导致了问题。

4

3 回答 3

1
<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>

在此处输入图像描述

我对吗?;)

于 2013-01-30T20:00:29.307 回答
1

它对我有用。我的猜测是,无论您要测试什么,sp 都会从默认的 sp=dp 缩小。这将使您的 dp 填充将块推过,因为灰色和白色块之间的可用空间量是:

(300-200)/2 - 10 = 40

你的红色方块是50。

如果您想要更一致的结果,请使用 dp,因为 sp 将根据偏好进行缩放,并且通常用于文本缩放。

于 2013-01-30T20:06:25.293 回答
1

不要使用 sp 作为单位。尝试改用 dp(设备像素)。这将考虑设备。在您的情况下,图像未正确缩放,因此出现此结果。您还可以在视图 v2 上设置重力。就像是 :

android:gravity="botton|right"

或者您也可以尝试将基线设置为:

android:layout_alignBaseline="@+id/v1"

并将 alignRight 设置为:

android:layout_alignRight="@+id/v1"
于 2013-01-30T20:36:11.537 回答