He tenido muchos problemas con este diseño.

Básicamente tengo 2 lineales, uno que es ligeramente gris con esa sombra en la parte inferior y debajo de otro lineal solo blanco. Mi problema aquí es agregar esa sombra al final del primer lineal. Intenté "elevación", pero eso es lo que necesito ahora, ya que quiero que la sombra esté dentro del tipo lineal si los últimos 10dp son de un color diferente, pero no lo estoy haciendo bien.

enter image description here

Este es mi diseño hasta ahora, pensé en poner una vista dentro del primer lineal, pero no funciona tan bien.

¿Alguna idea de como hacer esto?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:background="#f8f8f8"
        android:layout_height="0dp">

        <android.support.v7.widget.CardView
            app:cardCornerRadius="10dp"
            app:cardElevation="10dp"
            android:layout_width="312dp"
            android:layout_height="204dp"
            app:cardBackgroundColor="@android:color/holo_red_light"/> 
    </LinearLayout>


    <LinearLayout
        android:background="#ffffff"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="0dp">

    </LinearLayout>
</LinearLayout>
0
Hugo 3 ene. 2020 a las 01:55

2 respuestas

La mejor respuesta

Intente usar la línea de abajo en el linearlayout debajo del cual está sentado su cardview.

android:elevation="8dp"

Deje que la parte cardElevation en su cardView sea como es.

card_view:cardElevation="10dp"
card_view:cardPreventCornerOverlap="false"

También solo una sugerencia:

Si está utilizando android:layout_weight en ambos hijos linearLayout ponga android:weightSum="2" en su padre linearLayout como se menciona en la respuesta dada por @Ming Leung aquí

Para obtener más información sobre android:weightSum="2", puede consultar las respuestas en esta página

Esta página lo ayudaría a elevation en cardview

Espero que eso ayude.

2
Omkar C. 3 ene. 2020 a las 21:34

Pude hacer que funcionara usando un RestraintLayout:

<androidx.constraintlayout.widget.ConstraintLayout
    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="match_parent">

    <androidx.cardview.widget.CardView
        android:layout_width="312dp"
        android:layout_height="204dp"
        app:cardBackgroundColor="@android:color/holo_red_light"
        app:cardCornerRadius="10dp"
        app:cardElevation="10dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" >

    </androidx.cardview.widget.CardView>

</androidx.constraintlayout.widget.ConstraintLayout>

enter image description here

0
Cory Roy 2 ene. 2020 a las 23:25