Android 相对视图将视图设置到居中视图的右侧

Android 相对视图将视图设置到居中视图的右侧,android,android-layout,alignment,android-relativelayout,Android,Android Layout,Alignment,Android Relativelayout,我尝试将视图设置在第一个视图的右侧,并在相对视图内将其底部对齐 在我看来,下面的代码应该可以工作 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="300dp" android:layout_height="300dp" android:background="#999999" android:padding="10

我尝试将视图设置在第一个视图的右侧,并在相对视图内将其底部对齐

在我看来,下面的代码应该可以工作

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

但结果并不是我所期望的

这里有什么问题

我只是想明确一下我的期望:两个立方体应该底部对齐,并且红色立方体应该在白色立方体的右侧(外部)

编辑:

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


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


我说得对吗

这对我很管用。我的猜测是,无论您测试的是什么,sp都会从默认的sp=dp向下扩展。这将使您的dp填充将块推过,因为灰色和白色块之间的可用空间量为:

(300-200)/2 - 10 = 40
你的红方块是50


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

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

android:gravity="botton|right"
android:layout_alignBaseline="@+id/v1"
android:layout_alignRight="@+id/v1"
或者,您也可以尝试将基线设置为:

android:gravity="botton|right"
android:layout_alignBaseline="@+id/v1"
android:layout_alignRight="@+id/v1"
并将“右对齐”设置为:

android:gravity="botton|right"
android:layout_alignBaseline="@+id/v1"
android:layout_alignRight="@+id/v1"

对不起,我错用了sp。我纠正了这个问题。但这并没有什么区别。在RealtiveLayout中使用重力对我来说似乎很尴尬,因为项目应该使用Relativelayout参数进行定位。设置layout_alignBaseLine和layout_alignRight有效吗?问题实际上是父视图,因此问题不是真的有效。我只是把一个随机的答案标记为已接受。。。很抱歉搞混了。奇怪,完全相同的布局对我不适用。同样的问题。这一定是某种缩放问题,但实际上android应该正确处理这一问题。我在Galaxy Nexus和Nexus 10上测试了它,结果是一样的。问题实际上是父视图,所以这个问题实际上是无效的。我只是将一个随机答案标记为已接受…您是否也删除了填充?问题实际上是父视图,因此该问题实际上是无效的。我只是把一个随机的答案标记为已接受。。。很抱歉给你带来了困惑。