Android 视图放在前面不起作用

Android 视图放在前面不起作用,android,view,z-order,Android,View,Z Order,我想在动画期间更改某些视图的z顺序 在4.1.2以上的机器人上,它工作得很好,在4.1.2以下的机器人上,Z顺序没有改变,顶视图保持在顶部 这就是我正在尝试的 myView.bringToFront(); ((View)myView.getParent()).invalidate(); 如何使其在旧设备上工作 /** * Change the view's z order in the tree, so it's on top of other sibling * v

我想在动画期间更改某些视图的z顺序

在4.1.2以上的机器人上,它工作得很好,在4.1.2以下的机器人上,Z顺序没有改变,顶视图保持在顶部

这就是我正在尝试的

myView.bringToFront();
((View)myView.getParent()).invalidate();
如何使其在旧设备上工作

   /**
     * 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);
        }
    }
根据这一点,我只是错过了这条线

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

成功了

如果父视图是relativelayout,则它可能工作,也可能不工作。我尝试了
bringToFront
requestLayout
removeView;addView
,但运气不好。我的解决方案是将所有内容都放在框架布局中。我需要在顶部移动框架布局的按钮,使可见性不可见,然后在代码中使其可见。

我尝试了所有这些。一个亲戚应该在按钮上,但它只是不想服从

最后,我通过向RelativeLayout添加
android:elevation=“2dp”
解决了这个问题

高程值仅用于API level 21及更高版本。在我的例子中,API级别21以下的一切都是好的,而上面的一切都不是


希望这可能对某人有所帮助:)

我希望这对某人有用。
上述解决方案对我都不起作用。为什么?因为我想在叶子上的视角比其他视角的仰角小。因此,无论发生什么情况,海拔更高的景色总是在前面

对于Api的21或更高版本,有一个称为
translateZ
的xml属性,用于定义视图上的标高

你也可以用这个

android:translateZ=“30dp”


*API>=21

你是对的,我从另一个我想问的问题编辑了这篇文章,并决定不写,标题似乎没有改变,修复了它,谢谢你的回复:myView.bringToFront();myView.requestLayout();并且在Android 4.1.1中也可以使用,在sdkVersion 16:)上测试时确认。我以前在sdkVersion25上工作时没有注意到。这对于棒棒糖以上的设备是正确的。太棒了:我很高兴能帮上忙!很好的方法。非常感谢。