Elevation not working on a LinearLayout

After searching for a solution, I didn’t find any to solve my problem.

I have some elevation which produces a shadow on a big part of my app.
But in a particular place, I’m not able to make it work.
(It’s where I put an arrow on the picture below)

  • How to know when sync is finished?
  • Material Design - AppCompat toolbar without showing shadow
  • phonegap geolocation allways fail on timeout
  • How do I alignBaseline to bottom line of multi-line TextView?
  • GL error from OpenGLRenderer: 0x502
  • Android development on windows 7
  • enter image description here

    The white area below the toolbar is a Fragment which displays a LinearLayout

    layout:

    <LinearLayout
        android:id="@+id/panelAddress"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/button_flat_white"
        android:elevation="10dp"
        android:orientation="vertical"
        android:padding="20dp"
        >  
    //some content
    </LinearLayout>
    

    The parent of the Fragment :

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawerLayout"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
    
            <include
                android:id="@+id/custom_toolbar"
                layout="@layout/toolbar"/>
    
            <RelativeLayout
                android:id="@+id/mapLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    
                <fragment
                    android:id="@+id/map"
                    class="com.google.android.gms.maps.SupportMapFragment"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"/>
    
                <FrameLayout
                    android:id="@+id/fragment_container_top"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    />
    
                <FrameLayout
                    android:id="@+id/fragment_container_bottom"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"/>
    
            </RelativeLayout>
    
        </LinearLayout>
    
    </android.support.v4.widget.DrawerLayout>
    

    Do you have an idea about why I don’t get my elevation?

    Related posts:

    This Activity already has an action bar supplied by the window decor (FEATURE_ACTION_BAR)
    Android textview usage as label and value
    Youtube embed videos not working in webview. What&#039;s wrong with this code?
    OpenCV camera orientation issue
    Suppress Gradle Warning in Android Studio?
    Is this thread safe?
  • Package rename and error “Activity class does not exist”
  • Implementation of onScrollListener to detect the end of scrolling in a ListView
  • Access to WebView from another function in MainActivity class
  • PhoneGap camera restarts the application
  • Kill all activities when HOME key is pressed android
  • How to remove a runnable from a handler object added by postDelayed?
  • 6 Solutions collect form web for “Elevation not working on a LinearLayout”

    As described here https://stackoverflow.com/a/27518160/2481494 there are several requirements so that the shadow is drawn:

    • Space for the shadow in the parents view Group. As bleeding182 mentioned, padding can cause the shadow to be clipped:

      (Do NOT use a padding. A padding on the framelayout will also cut the shadow off)

      However, this can be fixed with android:clipToPadding="false" in the parent.

    • The elevated view needs to have a background to cast a shadow. Without information about your @drawable/button_flat_white I can’t tell whether this is a problem in your case.

    To solve your problem you should modify your FrameLayout like this:

    <FrameLayout
            android:id="@+id/fragment_container_top"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
    
            android:clipToPadding="false"
            android:paddingBottom="10dp"/>
    

    To check whether your @drawable/button_flat_white causes any problems try to change the background of your LinearLayout to a simple color temporarily:

    <LinearLayout
        android:id="@+id/panelAddress"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:elevation="10dp"
        android:orientation="vertical"
        android:padding="20dp"
    
        android:background="#fff">  
    //some content
    </LinearLayout>
    

    Just make CardView as parent of your LinearLayout and you can achieve elevation.

    <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_height="match_parent"
        card_view:cardUseCompatPadding="true"
        card_view:cardElevation="4dp"
        card_view:cardCornerRadius="3dp">
    
           <LinearLayout
                  android:id="@+id/panelAddress"
                  xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:background="@drawable/button_flat_white"
                  android:orientation="vertical"
                  android:padding="20dp">  
    
                //some content
          </LinearLayout>
     </android.support.v7.widget.CardView>
    

    This is a drawing issue.

    The cast shadow is drawn outside of the actual views bounds, so if the Parent layout does not “give” the view enough space, it will be clipped.

    Since the parent of the fragment (Linear layout) has the same size, the shadow is clipped. Add a margin on the bottom to the LinearLayout.
    If this does not help try wrapping the layout with a FrameLayout with a little margin on the bottom (Do NOT use a padding. A padding on the framelayout will also cut the shadow off)

    1-2dp should do.

    i hope it help you, Just add”marginTop” in second layout.

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:orientation="vertical"
        android:elevation="5dp"
         />
    
    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:orientation="vertical"
        android:padding="5dp"
        android:layout_marginTop="3dp"
        />
    

    I have use padding Right and padding bottom (for shadow at bottom and in right of layout)the it will work for me its shows an shadow otherwise the drawable shadow not working problem Do such thing if you facing same problem.

    Please enable hardwardAccelerated option in manifest file,

    <application
      ...
      android:hardwareAccelerated="true">
    
    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.