Подтвердить что ты не робот

Взгляд на передний план не работает

Я хочу изменить z порядка некоторых просмотров во время анимации

В андроидах выше 4.1.2 он отлично работает, а на андроидах ниже 4.1.2 порядок Z не меняется, верхний вид остается сверху.

Это то, что я пытаюсь.

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

Как заставить его работать на более старых устройствах?

4b9b3361

Ответ 1

   /**
     * Change the view z order in the tree, so it 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 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);
        }
    }

в соответствии с этим мне просто не хватало строки

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

и это сработало!

Ответ 2

Я все это пробовал. Предполагалось, что RelativeLayout будет поверх кнопки, но он просто не хотел подчиняться.

В конце концов я решил это, добавив android:elevation="2dp" в RelativeLayout.

Значение высоты используется только в уровне API 21 и выше. В моем случае все, что ниже уровня API 21, было прекрасным, а все выше не было.

Надеюсь, это может помочь кому-то:)

Ответ 3

Я надеюсь, что это будет полезно для кого-то. Ни один из вышеперечисленных решений не работал у меня. Зачем? Поскольку мое мнение о том, что я хочу быть во Фронде, имеет возвышение, меньшее, чем другое. Таким образом, вид с большей высотой был всегда впереди, несмотря ни на что.

Ответ 4

Если родительский вид является relativelayout, тогда он может работать или может не работать. Я пробовал bringToFront, requestLayout и removeView; addView, но не повезло. Моим решением было положить все в рамки. То, что мне было нужно сверху, было перемещено в окошке рамки с видимостью невидимым, а затем в коде было сделано видимым.

Ответ 5

Для Api 21 или выше Существует атрибут xml, известный как translateZ, который позволяет вам определить уровень высоты в представлении.

Вы тоже можете это использовать.

android: translateZ = "30dp"

* API >= 21