public void setTargetView(View target, View beAddView) {

        if (beAddView.getParent() != null) {
            ((ViewGroup) beAddView.getParent()).removeView(beAddView);
        }


        if (target == null) {
            return;
        }


        if (target.getParent() instanceof FrameLayout) {
            ((FrameLayout) target.getParent()).addView(beAddView);


        } else if (target.getParent() instanceof ViewGroup) {
            // use a new Framelayout container for adding badge
            ViewGroup parentContainer = (ViewGroup) target.getParent();
            int groupIndex = parentContainer.indexOfChild(target);
            parentContainer.removeView(target);


            FrameLayout badgeContainer = new FrameLayout(getContext());
            ViewGroup.LayoutParams parentLayoutParams = target.getLayoutParams();


            badgeContainer.setLayoutParams(parentLayoutParams);
            target.setLayoutParams(new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));


            parentContainer.addView(badgeContainer, groupIndex, parentLayoutParams);
            badgeContainer.addView(target);


            badgeContainer.addView(beAddView);
        } else if (target.getParent() == null) {
            Log.e(getClass().getSimpleName(), "ParentView is needed");
        }


    }

本文转载:CSDN博客