我想在Android中定义RelativeLayout的视图的z顺序。

我知道其中一个方法就是打电话给bringToFront。

有更好的方法吗?这将是伟大的,如果我可以在布局xml定义z顺序。


当前回答

如果你想在代码中这样做 你可以这样做

View.bringToFront();

看文档

其他回答

我想我应该加上一个答案,因为介绍了

android: translationZ

XML字段稍微改变了一点。其他答案建议你跑步

childView1.bringToFront();

parentView.invalidate();

除了这段代码不会把childView1在任何视图前硬编码的android:translationZ在XML文件中。我遇到了这个问题,一旦我从其他视图中删除了这个字段,bringToFront()工作得很好。

最简单的方法就是注意视图添加到XML文件中的顺序。文件的下方意味着z轴的上方。

编辑: 在这里和这里的Android开发者网站上都有记录。(感谢@flightplanner)

检查在XML中的某个视图上是否有任何提升。如果是,请向其他项目添加标高或删除标高以解决问题。从这里开始,是视图的顺序决定了什么在其他视图之上。

API 21内置了view.setElevation(float)

使用ViewCompat。setElevation(视图中,浮动);为了向后兼容

更多方法ViewCompat。setZ(v,像素)和ViewCompat。setTranslationZ (v,像素)

另一种方法是收集按钮或视图数组,并使用addView添加到RelativeLayout

您也可以使用下面的代码示例来实现相同的效果

ViewCompat.setElevation(sourceView, ViewCompat.getElevation(mCardView)+1);

这是向后兼容的。 这里mccardview是一个应该在sourceView下面的视图。