【发布时间】: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