繁体   English   中英

视图带到前面不起作用

[英]View bring to front doesnt work

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

在 4.1.2 以上的 Android 上它工作得很好,在 4.1.2 以下的 android 上,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应该在Button的顶部,但它只是不想服从。

最后,我通过将android:elevation="2dp"到RelativeLayout来解决它。

高程值仅用于API级别21及更高级别。 在我的情况下,API级别21以下的所有内容都很好,上面的所有内容都没有。

希望这可能有助于某人:)

我希望这对某些人有用。 上述解决方案均不适合我。 为什么? 因为我想要在叶子中的视图比其他视图的高度小。 因此无论如何,具有更高海拔的视图始终在前方。

如果父视图是relativelayout,那么它可能有效或可能无效。 我试过了bringToFrontrequestLayoutremoveView; addView removeView; addView ,但没有运气。 我的解决方案是将所有内容放在framelayout中。 我在顶部需要的是移动了framelayout的buttom,可见性不可见,然后在代码中它变得可见。

对于Api 21或更高版本有一个称为translateZ的xml属性,它允许您在视图上定义高程级别。

你也可以使用它。

机器人:translateZ = “30DP”

* APIs> = 21

根据this我只是错过了这条线

这条简单的线路适合您

yourView.bringToFront();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM