Search code examples
androidxmlshadowandroid-framelayoutandroid-elevation

How to change direction of android elevation shadow?


I have FrameLayout with android:elevation="4dp". Shadow of this elevation directed down. I want change direction of shadow to up.

<FrameLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:elevation="10dp"
    android:layout_marginBottom="100dp"
    android:background="@color/ColorPrimary"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">
</FrameLayout>

Solution

  • I consider this method is the best solution: Android Bottom Navigation Bar with drop shadow Thanks, Alexander Bilchuk.

    Solution:

    You can draw your own shadow just above the view using simple View and its background:

    <View
        android:layout_width="match_parent"
        android:layout_height="4dp"
        android:layout_above="@id/bottom_bar"
        android:background="@drawable/shadow"/>
    

    drawable/shadow.xml:

    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <gradient
            android:startColor="#1F000000"
            android:endColor="@android:color/transparent"
            android:angle="90" />
    </shape>
    

    Also, there are no compatibility issues if use this approach.