Android 版面边距中的负像素

Android 版面边距中的负像素,android,Android,我正在编辑一个开源项目,发现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 graphi

我正在编辑一个开源项目,发现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)
你知道问题出在哪里吗?

简单地说:

在给定的情况下,您不能有负的裕度


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

原因是,在以前版本的Android SDK中,允许负边距(高达2.2?)。负边距之前引发了一种“未指定的行为”,也就是说,它们实际上将布局向负方向移动。我以前使用过这个功能,它实际上有时非常有用

我的猜测是:(1)布局紧靠屏幕边缘,这就是导致错误的原因;(2)负边距现在不再允许,它们会抛出错误。但我不能证实这一点


我只是把它改为零。

因为不允许负值?从什么时候开始,你可以在一个对象周围画一个负边距。即使它们在允许的情况下,需要负边距的布局基本上就是做错了…我会先去掉你的负边距。实际上,根据@romainguy()@kcopock,线性布局和相对线布局都允许负边距。如果这是真的,那么他试图将其分配给的对象可能不是这样。也就是说,不是线性或相对布局。我回家后需要测试,但我相当确定我在ICS上使用了负裕度。我无法测试以确认这个答案。批准只是为了奖励更好的答案。是的,你可以,当然是在ICS和我认为JB。事实上,负边距的效果非常好——我想如果你没有空间来处理它,它会崩溃,但当你想在图像底部重叠一些东西时,它是一个相对的理想选择。我正在使用它在Google+应用程序中为我正在开发的类似社交媒体平台应用程序重新创建列表UI,用户的个人资料图片与发布的图像底部重叠。