Android relativeLaout Z-ordering bug

时间:2016-04-30 13:38:10

标签: android android-layout relativelayout android-xml z-order

我在RelativeLayout中遇到z排序的奇怪问题。

要求

视图v2应始终高于btn1,无论其是TextView还是Button

问题

当我在RelativeLayout

中有两个视图时,一个Button和TextView
        <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" >

        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:background="@color/transparent"
            android:clickable="false"
            android:drawableTop="@drawable/dr1"
            android:singleLine="true"
            android:text="Button"
            android:textColor="#FFFFFF"
            android:textSize="9dp" >
        </Button>

        <TextView
            android:id="@+id/v2"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_alignTop="@+id/btn1"
            android:layout_marginTop="2dp"
            android:background="@drawable/bg_red"
            android:gravity="center"
            android:singleLine="true"
            android:text="0"
            android:maxLength="2"
            android:textColor="@color/white"
            android:textSize="10dp"
            android:visibility="invisible" 
            android:clickable="false"
            />
    </RelativeLayout>

但是当渲染视图时TextView会在按钮后面,当我用Button替换TextView时,视图变得正常,代码显示视图v2高于btn1

        <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" >

        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:background="@color/transparent"
            android:clickable="false"
            android:drawableTop="@drawable/dr1"
            android:singleLine="true"
            android:text="Button"
            android:textColor="#FFFFFF"
            android:textSize="9dp" >
        </Button>

        <Button
            android:id="@+id/v2"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_alignTop="@+id/btn1"
            android:layout_marginTop="2dp"
            android:background="@drawable/bg_red"
            android:gravity="center"
            android:singleLine="true"
            android:text="0"
            android:maxLength="2"
            android:textColor="@color/white"
            android:textSize="10dp"
            android:visibility="invisible" 
            android:clickable="false"
            />
    </RelativeLayout>

因此,当我在Button上方有TextView时,它会在Button后面呈现它,但是当我用Button替换TextView标签时,视图变得正确,视图V2显示在前面

当我在ImageView中加载图像时,类似的问题,当没有设置ImageView src并使用背景时,ImageView后面的视图是可见的,当设置图像src时,视图在前面的前面会返回< / p>

1 个答案:

答案 0 :(得分:0)

android:elevation="2dp"添加到您的视图v2。这将把它带到其他视图的顶部。

编辑:代码方法

将以下内容添加到Activity课程中:yourView.bringToFront();