我想在Android中定义RelativeLayout的视图的z顺序。
我知道其中一个方法就是打电话给bringToFront。
有更好的方法吗?这将是伟大的,如果我可以在布局xml定义z顺序。
我想在Android中定义RelativeLayout的视图的z顺序。
我知道其中一个方法就是打电话给bringToFront。
有更好的方法吗?这将是伟大的,如果我可以在布局xml定义z顺序。
当前回答
childView.bringToFront()对我来说不起作用,所以我设置了最近添加的项目(覆盖所有其他孩子的项目)的Z翻译为负值,如下所示:
lastView.setTranslationZ(-10);
详见https://developer.android.com/reference/android/view/View.html#setTranslationZ(float)
其他回答
如果你想在代码中这样做 你可以这样做
View.bringToFront();
看文档
检查在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下面的视图。
你可以使用重定义的自定义RelativeLayout
getChildDrawingOrder (int childCount, int i)
注意-这个方法将参数i作为“我应该在哪个视图中绘制i”。 这就是ViewPager的工作原理。它与PageTransformer一起设置自定义绘制顺序。