android - ¿La sombra de Cardview no aparece en los dispositivos de lollipop?
android-layout android-5.0-lollipop (6)
Como se mencionó allí, CardView no muestra Shadow en Android L, asegúrese de que está dibujando su vista usando hardwareAccelerated = true
Ver Android Hardware Acceleration para más detalles
Estoy usando cardview en mi aplicación de Android. Sin embargo, la sombra no se muestra. Aquí está el diseño xml
La sombra predeterminada del menú de opciones tampoco se muestra.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ECEDF0"
android:orientation="vertical" >
<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="wrap_content"
android:layout_gravity="center"
android:clipChildren="false"
card_view:cardBackgroundColor="@color/white"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="14dp"
card_view:cardUseCompatPadding="true" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="20dp"
android:text="Google Play" />
</android.support.v7.widget.CardView>
</LinearLayout>
Después de revisar nuevamente los documentos, finalmente encontré la solución.
Simplemente agregue card_view:cardUseCompatPadding="true"
a su CardView
y las sombras aparecerán en los dispositivos Lollipop.
Lo que sucede es que el área de contenido en un CardView
toma diferentes tamaños en los dispositivos pre-lollipop y lollipop. Entonces, en los dispositivos con piruletas, la sombra está cubierta por la tarjeta, por lo que no es visible. Al agregar este atributo, el área de contenido permanece igual en todos los dispositivos y la sombra se vuelve visible.
Mi código xml es como:
<android.support.v7.widget.CardView
android:id="@+id/media_card_view"
android:layout_width="match_parent"
android:layout_height="130dp"
card_view:cardBackgroundColor="@android:color/white"
card_view:cardElevation="2sp"
card_view:cardUseCompatPadding="true"
>
...
</android.support.v7.widget.CardView>
Hola amigos, obtuve la solución del problema anterior. Solo agregue este código en su xml.
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_margin="8dp"
android:id="@+id/griditem"
android:layout_height="match_parent"
card_view:cardUseCompatPadding="true"
card_view:cardElevation="4dp"
card_view:cardCornerRadius="3dp">`
Espero que te sea útil ...
Para Lollipop y superior, debe agregar algunos márgenes a la tarjeta:
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
/>
Dado que la sombra se encuentra fuera de la vista real
Por favor intente poner android: hardwareAccelerated = "false" El archivo androidManifest puede resolver su problema porque también enfrenté el mismo problema y lo resolví agregando 1 línea solo en el manifiesto.
para alguien ,
otra cosa que debes tener en cuenta, las sombras no se mostrarán si tienes esta línea en el manifiesto:
android: hardwareAccelerated = "falso"
Intenté todas las sugerencias, pero solo funcionó cuando quité la línea, la razón por la que tenía la línea era porque mi aplicación funciona con varias imágenes de mapas de bits y hacían que la aplicación fallara.