CardView在FrameLayout之上,但是首先宣布

我有简单的FrameLayout,支持CardView作为第一项,TextView作为第二项,所以TextView必须在充气的视图之上。 这对预Lolipop的作品,但21 +卡在布局最重要的地方,为什么这样,以及如何解决这个问题? 与RelativeLayout相同的东西。 布局:

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="200dp" android:layout_margin="20dp" app:cardBackgroundColor="#ff0000" app:cardUseCompatPadding="false" /> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:text="i am top view!" android:gravity="center" android:layout_gravity="center" android:textSize="30sp" android:textAllCaps="true" android:textColor="#00ff00" android:background="#0000ff" /> </FrameLayout> 

Solutions Collecting From Web of "CardView在FrameLayout之上,但是首先宣布"

只需要在卡片视图中添加文本视图,就像我知道在一个框架布局中z的顺序是未定义的,但是最后的布局视图应该是最后绘制的。

这可能与棒棒糖使用高程中的卡片视图有关,而他们在棒棒糖的边框绘制代码上回落。

如果有人来到这里,设置高程的解决scheme对他们不起作用(就像在我的情况下,我需要在CardView上方绘制图像并在其上绘制图像是不可接受的),则可以通过以下方法解决问题:将CardView包装在另一个FrameLayout 。 在提供的例子中,它看起来像这样:

 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content"> <!-- This is the added FrameLayout --> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="200dp" android:layout_margin="20dp" app:cardBackgroundColor="#ff0000" app:cardUseCompatPadding="false" /> </FrameLayout> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:text="i am top view!" android:gravity="center" android:layout_gravity="center" android:textSize="30sp" android:textAllCaps="true" android:textColor="#00ff00" android:background="#0000ff" /> </FrameLayout> 

这对我有用!

 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content"> <!-- Add this layout as parent of CardView --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="200dp" android:layout_margin="20dp" app:cardBackgroundColor="#ff0000" app:cardUseCompatPadding="false" /> </LinearLayout> <!--Close parent layout--> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:layout_gravity="center" android:background="#0000ff" android:gravity="center" android:text="i am top view!" android:textAllCaps="true" android:textColor="#00ff00" android:textSize="30sp" /> </FrameLayout>