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上测试了它,结果是一样的。问题实际上是父视图,所以这个问题实际上是无效的。我只是将一个随机答案标记为已接受…您是否也删除了填充?问题实际上是父视图,因此该问题实际上是无效的。我只是把一个随机的答案标记为已接受。。。很抱歉给你带来了困惑。