clipChildren无法正常工作

在我的应用程序中,我试图使用animation移动图像。 当我尝试将图像( imageView2imageView4 )设置为imageView1 ,图像在移出布局时会切割。 源图像是imageView2imageView4 ,目标图像是imageView1

下面是我的XML:

           

animation代码如下:

 imageView4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub int sourceCoords[] = new int[2]; int targetCoords[] = new int[2]; int xDelta; int yDelta; imageView4.getLocationOnScreen(sourceCoords); image.getLocationOnScreen(targetCoords); xDelta = targetCoords[0] - sourceCoords[0]; yDelta = targetCoords[1] - sourceCoords[1]; TranslateAnimation animation = new TranslateAnimation(0, xDelta, 0, yDelta); animation.setDuration(400); animation.setFillAfter(false); animation.setAnimationListener(new MyAnimationListener()); imageView4.startAnimation(animation); } }); 

RelativeLayout的父亲之一可能是剪辑子项(有时兼容性库会添加一个神秘的ViewGroup,例如NoSaveStateFrameLayout )。 我过去曾经使用过类似的东西来成功禁用视图的所有父级的剪辑:

 public void disableClipOnParents(View v) { if (v.getParent() == null) { return; } if (v instanceof ViewGroup) { ((ViewGroup) v).setClipChildren(false); } if (v.getParent() instanceof View) { disableClipOnParents((View) v.getParent()); } } 

最后一个原因是“RelativeLayout”。 因此,要解决此问题,请不要将RelativeLayout用作比父控件更大的父控件。 相反,FrameLayout,如:

         

我知道它已经很晚了,但这是最简单的完整答案:

只需穿上每个布局:

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

嗨〜如果您的布局包含“paddingXXX”标签,您可以删除它们并重试。 这对我有用〜

  

上面的代码将剪辑childView,然后不会: