在 ImageView 上设置负边距会移动 ImageView 但不是 Image

Posted

技术标签:

【中文标题】在 ImageView 上设置负边距会移动 ImageView 但不是 Image【英文标题】:Set negative margin on ImageView shifts ImageView but not Image 【发布时间】:2012-05-02 00:57:42 【问题描述】:

我需要将作为 LinearLayout 的直接子代的 ImageView 向左移动一点。

会发生什么:视图被移动(可以看到“边界框”被移动,使用 android 布局管理器)但可绘制对象保持在同一个位置。

如果我将边距设置得足够低,drawable 也会在右侧被剪切。

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

澄清:我必须将图像向左移动。这意味着有点超出了包含布局的边界。

【问题讨论】:

【参考方案1】:

如果您的容器有足够的内边距,您可以将其 clipToPadding 设置为 false 并使用负边距!

【讨论】:

【参考方案2】:

似乎元素总是在超出父级边界时被剪裁(还有 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>

【讨论】:

感谢您的回答,但请您提供一个带有真实代码的示例吗?我无法理解。提前谢谢你。 嗨。还需要吗?抱歉没有时间......只需将您想要“移动”的项目和其余项目(在包含布局中)放在相对或框架布局中,而不是将项目向左移动,将“其余”移动到装备...【参考方案3】:

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

【讨论】:

我必须将图像向左移动。这意味着有点超出了包含布局的边界。 尝试在xml中使用android:adjustViewBounds="true"来自动调整视图的边界。

以上是关于在 ImageView 上设置负边距会移动 ImageView 但不是 Image的主要内容,如果未能解决你的问题,请参考以下文章

容器流体留下空白空间

当我尝试使用负边距向上移动图像时,整个容器向上移动

探究负边距(negative margin)原理

为啥子div的边距会影响父div的边距? [复制]

一种平滑的幻灯片图像

如何在约束布局上实现重叠/负边距?