Android视图在离开父级时消失

2022-08-31 14:26:44

我在这个线性布局中有一个LinearLayout和ImageView。

ImageView有一个平移效果。

// v = ImageView    
ObjectAnimator animation2 = ObjectAnimator.ofFloat(v, "translationY", 200);
                        animation2.setDuration(3000);
                        animation2.setTarget(v);
                        animation2.start();

动画工作正常,但当ImageView离开LinearLayout时,它正在消失。

如何在不修改LinearLayout高度的情况下修复它。


答案 1

找到 ImageView 所属的 ViewGroup 并应用 ViewGroup.setClipChildren(false)。默认情况下,子项的绘制仅限于父视图组的边界。


答案 2

存在两个可能导致这种情况发生的属性:clipChildren 和 clipToPadding。您需要将 clipChildren 设置为 false,以便对象从其边界中取出其边界的每个父视图组。您还需要将 clipToPadding 设置为直接父级(也许还有更多,但我还没有看到它的情况)。

您可以在 XML 中设置这两个属性

android:clipChildren="false"
android:clipToPadding="false"

或在代码中

viewGroup.setClipChildren(false);
viewGroup.setClipToPadding(false);

推荐