相对布局中的z索引

我需要在RelativeLayout中的Button上方放置TextView。 但它不工作:TextView总是在button下,如果我在button之前移动它 – 也。 我也尝试了把frontChildToFront()函数移到前面的textview,但没有运气。 请指教。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rlBottom" android:layout_width="fill_parent" android:layout_height="match_parent"> <Button android:id="@+id/bVio" android:layout_width="wrap_content" android:layout_height="50dip" android:layout_alignParentLeft="true" android:text="VIO"></Button> <TextView android:id="@+id/bVio_count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/bVio" android:layout_marginTop="6dip" android:layout_marginRight="6dip" android:text="00" android:textSize="15dip" android:textColor="#FF0000"/> </RelativeLayout> 

Solutions Collecting From Web of "相对布局中的z索引"

我偶然发现了这个问题,但是我在这里解决了这个问题。

使用API​​级别为21(Lollipop / Android 5.0)的Android上的问题发生在使用具有高程的项目(如button)时。

在订购棒棒堂设备上的布局时,Android将查看XML中项目的顺序。 进一步向下的项目是在XML中Z-index中的更高。 所以,如果你先放置button,并将TextField放置在它下面,它将工作。

然而,当决定使用Android 21以上API的设备上的Z索引的顺序时,系统还将查看高程项目,并将具有较高高程值的项目渲染到具有较低高程值的项目之上。 所以要让你的devise工作,你必须确保你的TextField比你的Button有更高的高度,你可以通过在你的项目上定义android:elevation来实现。 下面的模拟XML适用于API级别21之前和之后的设备:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rlBottom" android:layout_width="fill_parent" android:layout_height="match_parent"> <Button android:id="@+id/bVio" android:layout_width="wrap_content" android:layout_height="50dip" android:layout_alignParentLeft="true" android:text="VIO" android:elevation="0dp" /> <TextView android:id="@+id/bVio_count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/bVio" android:layout_marginTop="6dip" android:layout_marginRight="6dip" android:text="00" android:textSize="15dip" android:textColor="#FF0000" android:elevation="10dp" /> </RelativeLayout> 

把RelativeLayout作为你的button,通过改变它的背景并将TextView设置为centerInParent =“True”

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rlBottom" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/ic_launcher" > <TextView android:id="@+id/bVio_count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="I am khan " android:textColor="#FF0000" android:textSize="35dip" /> </RelativeLayout> 

 (RelativeLayout)findViewById(R.id.rlBottom).setOnClick(new OnClick... //like a button 

首先放置TextView,而不是应用layout_belowbutton:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rlBottom" android:layout_width="fill_parent" android:layout_height="match_parent"> <TextView android:id="@+id/bVio_count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/bVio" android:layout_marginTop="6dip" android:layout_marginRight="6dip" android:text="00" android:textSize="15dip" android:textColor="#FF0000"/> <Button android:id="@+id/bVio" android:layout_width="wrap_content" android:layout_height="50dip" android:layout_alignParentLeft="true" android:layout_below="@+id/bVio_count" android:text="VIO"/> </RelativeLayout>