Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - CardView elevation shadow make darker

I am using 'com.android.support:cardview-v7:23.4.0' and I see the shadow but is not a dark grey shadow, and I would like to get a darker elevation shadow, but I do not see any attribute to get it, any ideas?

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginBottom="8dp"
        app:cardElevation="8dp"
        app:cardPreventCornerOverlap="false"
        app:cardCornerRadius="1dp"
        app:cardUseCompatPadding="false">
        <include layout="@layout/any_layout"/>
    </android.support.v7.widget.CardView>
like image 742
Billyjoker Avatar asked Aug 28 '17 08:08

Billyjoker


People also ask

How do I customize my CardView?

Customized CardView First, add a CardView dependency to the application-level build. gradle file. Then create a drawable background for the cards. For that, create a new drawable resource file inside the drawable folder.

How do I change the color of my card shadow?

Use Fake Shadow. xml ) in the parent layout which is looking like a shadow. You can replace FF46A9 in shadow. xml to change the color of shadow. Also android:backgroundTint="@color/colorShadow" works but you have to adjust colors alpha in shadow.

What is CardView elevation?

CardView uses elevation property on Lollipop for shadows and falls back to a custom emulated shadow implementation on older platforms. Due to expensive nature of rounded corner clipping, on platforms before Lollipop, CardView does not clip its children that intersect with rounded corners.

What are Android shadows?

Shadows are drawn by the parent of the elevated view, and thus subject to standard view clipping, clipped by the parent by default. Elevation is also useful to create animations where widgets temporarily rise above the view plane when performing some action.


2 Answers

I believe that the shadow intensity is defined by the underlying theme that the app uses. So for API level more than 21, you can override the intensity of shadows. In your styles.xml add these two extra lines of ambientShadowAlpha and spotShadowAlpha. Please note that these values range from 0 to 1, with 0 being completely transparent and 1 being completely opaque(almost black) :

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="android:fontFamily">@font/barlow_family</item>
    <item name="android:ambientShadowAlpha">1</item>
    <item name="android:spotShadowAlpha">1</item>

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:statusBarColor">@android:color/background_light</item>
</style>

like image 162
Atharva Kulkarni Avatar answered Sep 19 '22 09:09

Atharva Kulkarni


   <androidx.cardview.widget.CardView app:cardCornerRadius="10dp"
        app:cardUseCompatPadding="true"
        android:elevation="10dp"
        android:outlineSpotShadowColor="@color/black"
        android:outlineAmbientShadowColor="@color/grey"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

 app:cardUseCompatPadding="true"

try this

like image 30
INFINITY GUY Avatar answered Sep 22 '22 09:09

INFINITY GUY