我想在Android中定义RelativeLayout的视图的z顺序。
我知道其中一个方法就是打电话给bringToFront。
有更好的方法吗?这将是伟大的,如果我可以在布局xml定义z顺序。
我想在Android中定义RelativeLayout的视图的z顺序。
我知道其中一个方法就是打电话给bringToFront。
有更好的方法吗?这将是伟大的,如果我可以在布局xml定义z顺序。
当前回答
请注意,API 21及更高版本中的按钮和其他元素都有很高的高度,因此忽略元素的xml顺序,而不管父布局如何。我花了好长时间才想明白。
其他回答
API 21内置了view.setElevation(float)
使用ViewCompat。setElevation(视图中,浮动);为了向后兼容
更多方法ViewCompat。setZ(v,像素)和ViewCompat。setTranslationZ (v,像素)
另一种方法是收集按钮或视图数组,并使用addView添加到RelativeLayout
我遇到了同样的问题:在一个相对布局parentView中,我有两个孩子childView1和childView2。首先,我把childView1放在childView2上面,我想让childView1在childView2上面。改变孩子们观点的顺序并没有解决我的问题。对我有用的是在parentView上设置android:clipChildren="false",在我设置的代码中:
childView1.bringToFront();
parentView.invalidate();
如果你想在代码中这样做 你可以这样做
View.bringToFront();
看文档
最简单的方法就是注意视图添加到XML文件中的顺序。文件的下方意味着z轴的上方。
编辑: 在这里和这里的Android开发者网站上都有记录。(感谢@flightplanner)
我想我应该加上一个答案,因为介绍了
android: translationZ
XML字段稍微改变了一点。其他答案建议你跑步
childView1.bringToFront();
parentView.invalidate();
除了这段代码不会把childView1在任何视图前硬编码的android:translationZ在XML文件中。我遇到了这个问题,一旦我从其他视图中删除了这个字段,bringToFront()工作得很好。