【发布时间】:2012-05-02 00:57:42
【问题描述】:
我需要将作为 LinearLayout 的直接子代的 ImageView 向左移动一点。
会发生什么:视图被移动(可以看到“边界框”被移动,使用 android 布局管理器)但可绘制对象保持在同一个位置。
如果我将边距设置得足够低,drawable 也会在右侧被剪切。
这是为什么?有什么建议吗?
- 澄清:我必须将图像向左移动。这意味着有点超出了包含布局的边界。
【问题讨论】:
我需要将作为 LinearLayout 的直接子代的 ImageView 向左移动一点。
会发生什么:视图被移动(可以看到“边界框”被移动,使用 android 布局管理器)但可绘制对象保持在同一个位置。
如果我将边距设置得足够低,drawable 也会在右侧被剪切。
这是为什么?有什么建议吗?
【问题讨论】:
如果您的容器有足够的内边距,您可以将其 clipToPadding 设置为 false 并使用负边距!
【讨论】:
似乎元素总是在超出父级边界时被剪裁(还有 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>
【讨论】:
为什么使用负边距?在 ImageView 的另一侧向要移动图像的方向多使用正值,即如果要将图像向左移动,请在右侧使用更多的正边距。
【讨论】:
android:adjustViewBounds="true"来自动调整视图的边界。