В Android я использую RecyclerView
. Для элемента RecyclerView я использую CardView в качестве макета элемента с макетом XML ниже:
<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, если элемент не является последним элементом в списке, его нижняя тень будет disappear
, так как она будет закрыта следующим элементом (CardView) в списке.
Ниже приведено предполагаемое поведение пользовательского интерфейса. Весь список наблюдения выглядит как одиночный CardView, но на самом деле это RecyclerView, где каждый элемент состоит из CardView, только нижняя тень перекрывается следующим элементом под ним. Это хорошо работает в Android API 25 (Android 7.1.2):
Но в Android API 16 (Android 4.1.2) результат не такой, как ожидалось. Нижняя тень (граница) по-прежнему видна, также похоже, что между каждым элементом добавлено дополнительное поле.
Любая идея, как решить эту проблему в Android 4.1.2?
Elevation
применим только в Android API старше 21 года. ‹br›Проверьте эту ссылку, чтобы получить представление о реализации желаемого эффекта. ниже API 21: - person Kavach Chandra   schedule 25.07.2017Elevation
не работает. (Она используетapp:cardElevation
из библиотеки поддержки. Таким образом, имеет смысл увидеть эффект высоты в Android 4) Она спрашивает, почему между строками нет пробела в Android 6, но есть пробел между строками в Android 4. - person Cheok Yan Cheng   schedule 25.07.2017