Elevation not working for ImageView

后端 未结 8 677
后悔当初
后悔当初 2020-12-28 13:26

Elevation for ImageView is not working. I declared ImageView in XML like this:



        
相关标签:
8条回答
  • 2020-12-28 13:52

    Works in all latest versions

    Use CardView as parent layout. Use android:background="@drawable/your_img" instead of android:src="@drawable/your_img" in ImageView.

    <android.support.v7.widget.CardView
        android:layout_gravity="center_horizontal"        
        app:cardElevation="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    
        <ImageView       
            android:id="@+id/image"
            android:background="@drawable/your_img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@null" />
    
    </android.support.v7.widget.CardView>
    
    0 讨论(0)
  • 2020-12-28 13:53

    The elevation attribute will be simply ignored if your minSdk version is less than 21. Either change that or try the method explained over here https://stackoverflow.com/a/28980908/7184172

    0 讨论(0)
  • 2020-12-28 13:54

    If you are using CardView, be sure to leave the CardView background transparent.

    <android.support.v7.widget.CardView
                    android:layout_gravity="center_horizontal"
                    app:cardElevation="@dimen/cardview_default_elevation"
                    app:cardBackgroundColor="@android:color/transparent"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">
    <ImageView
            android:id="@+id/image"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:src="@drawable/youtube" />
    
    </android.support.v7.widget.CardView>
    
    0 讨论(0)
  • 2020-12-28 13:58

    On Lollipop it works setting elevation. For pre-Lollipop, you need to implement shadows by yourself. Support-v4 has ViewCompat.setElevation(view, value) method for by if you check the sources there is no implementation. (at least, at the time of writing).

    0 讨论(0)
  • 2020-12-28 14:02

    Instead of using android:src you need to change to android:background for displaying shadows.

     <ImageView
        android:id="@+id/image"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:elevation="10dp"
        android:background="@drawable/youtube" />
    
    0 讨论(0)
  • 2020-12-28 14:10

    For displaying a round Image with SHADOW with elevation attribute, I created a round drawable WITHOUT SHADOW as shown below :

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <item>
            <shape android:shape="oval">
                <solid android:color="@android:color/white" />
            </shape>
        </item>
    
    </layer-list>
    

    Use this drawable as background in your ImageView as shown below :

        <ImageView
            android:id="@+id/my_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/round_shape"
            android:elevation="5dp"
            android:src="@drawable/center" />
    

    This will display ImageView with shadow.

    One question that might be arising in your mind is why to use xml drawable. As mentioned by other developers on various answers to this question, shadow is formed from background and a bordered background to be more specific. Xml drawable helps us in creating a bordered background from which elevation attribute can create shadow.

    0 讨论(0)
提交回复
热议问题