在
Android版本之前的lolipop中,以下代码可以正常工作,图像位于按钮的前面.但是在android 5中,imageview放在按钮的后面.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button" android:layout_width="210sp" android:layout_height="210sp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:background="@drawable/round_button" android:drawablePadding="10dip" android:gravity="center_vertical|center_horizontal" /> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:contentDescription="@string/torch" android:src="?attr/imageview" /> </RelativeLayout>
解决方法
该问题出现Android 5.0的高程属性.显然,RelativeLayout Z轴排序与高程相关.如果两个窗口小部件具有相同的高程,则RelativeLayout将确定Z轴顺序 – 例如,如果要将布局更改为Button窗口小部件,可以看到.但是,如果一个窗口小部件(Button)具有高程,并且另一个窗口小部件(ImageView)不具有,则高程将优先.
您可以通过android:stateListAnimator =“@ null”或defining your own custom animator删除按钮高程.或者,您可以在ImageView中添加一些高程,使其在Z轴上比Button更高.