布局边距中的负像素值

4

我正在编辑一个开源项目,发现将layout_marginTop的值设为-1dp会导致Eclipse中的图形预览失败并显示错误。完整的错误信息可能包含其他错误:

java.lang.NullPointerException
"-1dp" in attribute "layout_marginTop" is not a valid format.
Exception details are logged in Window > Show View > Error LogThe graphics preview in the layout editor may not be accurate:
Paint.setShadowLayer is not supported. (Ignore for this session)

你知道问题出在哪里吗?


2
因为不允许使用负值?自从什么时候可以在对象周围绘制负边距呢。 - IAmGroot
即使允许使用负值,需要负值的布局基本上是错误的... - WarrenFaith
我会建议你先去掉负数值。 - Addison
1
实际上,根据@romainguy的说法(https://dev59.com/yFXTa4cB1Zd3GeqPzC6f#5293636),LinearLayout和RelativeLayout允许使用负边距。 - Kevin Coppock
@kcoppock。如果这是真的,那么他尝试分配的对象很可能不是线性或相对布局。 - IAmGroot
没错,但只是澄清在某些情况下是可能的。(Romain Guy 是 Android 的开发人员之一,所以我会相信他的话) - Kevin Coppock
2个回答

2

简单来说:

在您的情况下,无法使用负边距。

因此,您的图形预览不知道如何呈现它。


2
由于在之前的 Android SDK 版本中允许使用负边距(最多到 2.2 版本?),因此出现了这种情况。以前,负边距会引发“未指定的行为”,也就是实际上将布局向负方向移动。我以前用过这个功能,有时确实很有用。
我的猜测是:(1)布局紧贴屏幕边缘,这导致了错误;或者(2)不再允许使用负边距,它们会抛出错误。但我无法确认。
建议将其更改为零。

1
我需要回家测试一下,但我相当确定我在ICS上使用了负边距。 - Kevin Coppock
2
我还没有能够测试以确认这个答案。只是批准以奖励更好的答案。 - Brian
当然可以,在ICS和JB中肯定可以。实际上,负边距效果非常好 - 我猜如果没有足够的空间来处理它,它可能会崩溃,但是当您想要在图像底部重叠某些内容时,RelativeLayout是理想的选择。我正在使用它来重新创建Google+应用程序中的列表UI,以便在类似的社交媒体平台应用程序中,用户的个人资料图片可以重叠在发布的图片底部。 - BasicPleasureModel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接