Cardview并不尊重相对布局中的z索引顺序

时间:2014-07-30 19:25:23

标签: java android android-5.0-lollipop android-cardview

我有一个内部有两个视图的相对布局,一个CardView和一个ImageButton,我需要将IB放在cardview上面,但是cardview并不尊重z索引顺序。如果我用一个LinearLayout替换cardview,它似乎没问题,所以我猜问题就在于cardview本身。

这是我的代码:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:background="@drawable/icons_bg_whited"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.noname.classmates.Activity.Register"
tools:ignore="MergeRootFrame"
android:padding="27dip">

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    card_view:cardCornerRadius="10dp"
    android:layout_marginTop="38dip">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/container"/>
</android.support.v7.widget.CardView>

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/btn_upload_pic"
    android:layout_centerHorizontal="true"
    android:src="@drawable/upload_profile_pic"
    android:contentDescription="@string/upload_profile_picture"
    android:background="@android:color/transparent" /> </RelativeLayout>

2 个答案:

答案 0 :(得分:16)

在Android L上,CardView有一个高程设置,无论它们在布局中的顺序如何,都会使其显示在其他视图上方。您需要在按钮上设置高程,或者更好,将按钮放在CardView内。

答案 1 :(得分:0)

是的,问题出在CardView上,它具有默认的高程,因此无论顺序如何,它都会出现在其他任何视图上。

为使其正常,我最终将CardView包裹在LinearLayout内。

这么早,就像

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    card_view:cardCornerRadius="10dp"
    android:layout_marginTop="38dip">

</RelativeLayout>

然后我将其更改为

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_marginTop="38dip">

  <android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    card_view:cardCornerRadius="10dp">
    .
    .
    .
  </CardView>
 </LinearLayout>
</RelativeLayout>

尽管我不知道为什么它可以工作 但可以按预期工作 的确切原因。