在Android中,我使用RecyclerView
。對於RecyclerView的項目,我使用CardView作爲項目的佈局,下面的XML佈局:Android CardView裏面RecyclerView - cardElevation導致不必要的保證金和底部影子
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="0dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="0dp"
app:cardElevation="2dp"
app:cardCornerRadius="0dp"
app:cardPreventCornerOverlap="false"
android:foreground="?attr/selectableItemBackground"
android:clickable="true" >
<LinearLayout
android:minHeight="48dp"
android:layout_marginTop="0dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="0dp"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
.......
</LinearLayout>
</CardView>
我使用CardView從android.support.v7.widget.CardView
。
我設置了cardElevation="2dp", layout_marginBottom="0dp", layout_marginTop="0dp"
。設置cardElevation使左側的影子,CardView的底部&。然後通過設置layout_marginBottom & layout_marginTop = 0dp,如果item不是列表中的最後一項,則它的底部陰影將爲disappear
,因爲它由列表中的下一項(CardView)覆蓋。
以下是預期的UI行爲。整個監控列表看起來像單個CardView,但實際上它是一個RecyclerView,每個項目由CardView組成,只有底部的影子被下一個項目所覆蓋。這適用於Android的API 25(安卓7.1.2):
但在Android API 16(安卓4.1.2),並不如預期的結果。底部陰影(邊框)仍然可見,也看起來像是在每個項目之間添加了額外的邊距。
不知道如何解決這個問題的Android 4.1.2?
'Elevation'屬性僅適用於Android API超過21個。
檢查[this](https://stackoverflow.com/a/21445593/5402482)鏈接以獲得實現API 21以下所需效果的想法: –
OP不問爲什麼'Elevation'不工作。 (她正在使用來自支持庫的'app:cardElevation',因此,在Android 4中查看提升效果是有意義的)她問爲什麼Android 6中的行之間有* no *空間,但Android 4中的行之間有空間。 –