FrameLayout、RelativeLayout。直觉上,在控件位置重叠时,xml处于底部的控件会出现在上层。
但是CardView,Button这类的控件即便处于xml顶部,仍然会覆盖xml底部的控件。
期望:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/ds76"
android:background="@drawable/bg_yellow_light_r10_with_padding"
android:orientation="vertical">
<androidx.cardview.widget.CardView
style="@style/easycash_card_view_no_padding_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/ds40"
android:layout_marginBottom="@dimen/ds40"
app:cardBackgroundColor="@color/transparent"
app:cardElevation="@dimen/ds6">
<TextView
android:id="@+id/btn_in_transition"
style="@style/easycash_card_catalog_page_button"
android:layout_width="match_parent"
android:layout_height="@dimen/ds120"
android:clickable="true"
android:focusable="true"
android:text="@string/go_detail_page" />
</androidx.cardview.widget.CardView>
<View
android:id="@+id/v_btn_shine"
android:layout_width="@dimen/ds200"
android:layout_height="@dimen/ds120"
android:background="@drawable/bg_btn_shine" />
</RelativeLayout>
实际:
原因:
CardView这类的控件默认会设置z轴高度来展示阴影。
解决:
- CardView增加一个父布局。
- 为显示在上部的控件设置translationZ。