diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java index d9c3a746..cfc69472 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java @@ -307,6 +307,19 @@ public class CameraView extends FrameLayout implements LifecycleObserver { } } + @Override + public void removeView(View child) { + if (child.getLayoutParams() instanceof OverlayLayoutParams) { + if (((OverlayLayoutParams) child.getLayoutParams()).drawInPreview) { + mOverlayLayoutManager.removeView(child); + } else { + mOverlayLayoutManagerBelow.removeView(child); + } + } else { + super.removeView(child); + } + } + @Override public LayoutParams generateLayoutParams(AttributeSet attributeSet) { OverlayLayoutParams toBeChecked = new OverlayLayoutParams(this.getContext(), attributeSet); diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/OverlayLayoutManager.java b/cameraview/src/main/java/com/otaliastudios/cameraview/OverlayLayoutManager.java index 0a273f6a..713b87de 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/OverlayLayoutManager.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/OverlayLayoutManager.java @@ -66,6 +66,19 @@ class OverlayLayoutManager extends FrameLayout implements SurfaceDrawer { } } + @Override + public void removeView(View child) { + // params must be instance of OverlayLayoutParams + if (!(child.getLayoutParams() instanceof CameraView.OverlayLayoutParams)) { + return; + } + + OverlayType viewOverlayType = new OverlayType((CameraView.OverlayLayoutParams) child.getLayoutParams()); + if (mLayouts.containsKey(viewOverlayType)) { + mLayouts.get(viewOverlayType).removeView(child); + } + } + @Override public void drawOnSurfaceForPictureSnapshot(Canvas surfaceCanvas) { surfaceCanvas.save();