View bring to front doesnt work

Lena Bru picture Lena Bru · Aug 14, 2014 · Viewed 26k times · Source

I want to change z order of some views during animation

On Androids above 4.1.2 it works just fine, and on androids below 4.1.2 the Z order doesnt change, the top view remains on top.

This is what i am trying.

myView.bringToFront();
((View)myView.getParent()).invalidate();

How to make it work on older devices ?

Answer

Lena Bru picture Lena Bru · Aug 14, 2014
   /**
     * Change the view's z order in the tree, so it's on top of other sibling
     * views. This ordering change may affect layout, if the parent container
     * uses an order-dependent layout scheme (e.g., LinearLayout). Prior
     * to {@link android.os.Build.VERSION_CODES#KITKAT} this
     * method should be followed by calls to {@link #requestLayout()} and
     * {@link View#invalidate()} on the view's parent to force the parent to redraw
     * with the new child ordering.
     *
     * @see ViewGroup#bringChildToFront(View)
     */
    public void bringToFront() {
        if (mParent != null) {
            mParent.bringChildToFront(this);
        }
    }

according to this I was simply missing the line

((View)myView.getParent()).requestLayout();

and it worked!