Взгляд на передний план не работает
Я хочу изменить z порядка некоторых просмотров во время анимации
В андроидах выше 4.1.2 он отлично работает, а на андроидах ниже 4.1.2 порядок Z не меняется, верхний вид остается сверху.
Это то, что я пытаюсь.
myView.bringToFront();
((View)myView.getParent()).invalidate();
Как заставить его работать на более старых устройствах?
Ответы
Ответ 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