在ImageView上设置负边距而不是ImageView,但不是图像

问题描述:

我需要将ImageView,它是LinearLayout的直接子元素左移一位。在ImageView上设置负边距而不是ImageView,但不是图像

发生了什么:视图被移位(可以看到“bounding box”被移动,使用android布局管理器),但drawable保持在同一个位置。

此外,如果我将边距设置得足够低,那么可以在右侧切出绘图。

enter image description here

这是为什么?有什么建议?

  • 说明:我必须将图像转移到左侧。这意味着包含布局边界的一点点。

看起来元素总是在父元素边界之外被剪切(也是用clipChildren = false)。

一种解决方案是为除了要移动的项目之外的所有内容创建额外的容器布局。然后将容器布局向相反的方向移动。

例如,转移-10dip:

<Original container ...> 
    <Item to be shifted/> 
    <New container with margin 10dip> 
     <Previous content of Original container ... /> 
    </New container with margin 10dip> 
</Original container> 
+0

感谢您的回答,但请您提供真实代码示例吗?我无法理解。先谢谢你。 – Natasha 2013-01-17 19:05:41

+0

嗨。仍然需要它?对不起,没有时间......只是把你想要“移动”的项目和其余部分(在包含的布局中)放在相对或框架布局中,而不是将项目移动到左边,将“休息”移动到rigt ... – Ixx 2013-02-05 22:14:41

+0

感谢您的评论。 – Natasha 2013-02-07 09:05:00

为什么使用负边距?对ImageView的另一侧使用更多的正数来移动图像的方向,即如果要将图像移到左侧,则在右侧使用更多的正边距。

+0

我必须将图像左移。这意味着包含布局边界的一点点。 – Ixx 2012-04-20 12:37:10

+0

尝试在xml中使用'android:adjustViewBounds =“true”'来自动调整视图的边界。 – orchidrudra 2012-04-20 12:56:05

+0

没有帮助::::/ – Ixx 2012-04-20 19:20:03

如果容器有足够的填充您可以设置它的clipToPadding和使用负边距!