RelativeLayout zorder棒棒糖

时间:2014-12-29 00:47:24

标签: android android-layout android-5.0-lollipop

我在API 19:4.2.2上有一些正确的布局正常工作但无法在API 21上运行:5.0.1。

这是布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/start_button"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textStyle="bold"
        android:textSize="30sp"
        android:background="@color/start_button_bg"
        android:textColor="@color/start_button_text"
        android:text="@string/start_process"/>

    <TextView
        android:id="@+id/pro_icon"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:textColor="@android:color/white"
        android:background="@drawable/pro_icon"
        android:text="PRO"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium"/>

</RelativeLayout>

真的很简单。我只想让textview在相对布局中覆盖Button。我知道相对布局按照它们在xml中添加的顺序堆栈视图,但这似乎在lollipop上不起作用。我无法通过按钮呈现TextView。有什么想法吗?

干杯。

1 个答案:

答案 0 :(得分:15)

默认情况下,Button在Android 5.0+上有elevation; TextView没有。窗口小部件的高程基本上会覆盖由RelativeLayoutFrameLayout设置的Z轴排序。

您的选择是:

  1. 重新设计您的用户界面,不要在Z轴上订购小部件,或

  2. Replace the StateListAnimator on your Button to modify or eliminate the elevation animation

  3. 尝试通过TextViewandroid:elevation的海拔高度更改为高于Button