【问题标题】:Android relativeLaout Z-ordering bugAndroid relativeLayout Z 排序错误
【发布时间】:2016-08-25 15:12:58
【问题描述】:

我在 RelativeLayout 中遇到了一个关于 z 排序的奇怪问题。

要求

View 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 时,视图变得正确,下面的代码显示了 btn1 上方的视图 v2

        <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 后面,但是当我将 TextView 标记替换为 Button 时,视图变得正确,并且视图 V2 显示在前面


当我在 ImageView 中加载图像时出现类似问题,当未设置 ImageView src 并使用背景时,ImageView 后面的视图是可见的,并且当设置了图像 src 时,视图较早在前面返回

【问题讨论】:

  • 看起来不错。请发送您的xml
  • 那么你的问题是什么?你想把视图带到顶部吗?如果你想让所有东西都保持相同的 Z,那么你应该将你的视图对齐在其他视图的底部或顶部,这样它们的位置就不会落后于任何其他视图。请发布您的xml文件代码,否则我们将很难给您更好的答案。
  • 在相对布局中,z-order取决于视图的初始化方式,因此RelativeLayout顶部的视图将具有最低的z-order,而RelativeLayout底部的视图将具有最高的z-order并且将高于所有观点,但那是不正确的
  • 你介意张贴一个按钮隐藏文本视图的屏幕截图吗?

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


【解决方案1】:

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

编辑:代码方法

将以下内容添加到您的 Activity 类中:yourView.bringToFront();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-06
    • 2011-09-07
    • 1970-01-01
    • 2023-04-04
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    相关资源
    最近更新 更多