高程不适用于ImageView

Kar*_*hik 26 android imageview android-elevation

ImageView的高程不起作用.我在XML中声明了ImageView,如下所示:

<ImageView
        android:id="@+id/image"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:elevation="10dp"
        android:src="@drawable/youtube" />
Run Code Online (Sandbox Code Playgroud)

我还应该做些什么来提升ImageView的正常工作?

Bla*_*der 27

高程阴影源自View的背景可绘制.如果您的ImageView没有背景,您将看不到阴影.

如果你想改变那种行为,你需要建立自己的行为ViewOutlineProvider并调用View.setOutlineProvider()它来设置它(这不是一件容易的事).

  • 应用`android:outlineProvider =“ bounds”`足以看到阴影。 (4认同)
  • 让我回顾一下: - 如果您希望阴影遵循半透明图像的边界,您需要将图像设置为背景或在代码中提供自定义 ViewOutlineProvider。- 如果您的图像完全不透明并且具有与 ImageView 相同的形状(矩形),那么您可以使用 `android:outlineProvider="bounds"` (2认同)

Tar*_*run 15

为了显示带有高程属性的 SHADOW 的圆形图像,我创建了一个圆形的可绘制的 WITHOUT SHADOW ,如下所示:

<?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>
Run Code Online (Sandbox Code Playgroud)

在你的 ImageView 中使用这个 drawable 作为背景,如下所示:

    <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" />
Run Code Online (Sandbox Code Playgroud)

这将显示带有阴影的 ImageView。

您可能会想到的一个问题是为什么要使用 xml drawable。正如其他开发人员在对这个问题的各种答案中提到的那样,阴影是由背景和带边框的背景形成的,更具体。Xml drawable 帮助我们创建一个带边框的背景,高程属性可以从中创建阴影。


Shy*_*mar 9

适用于所有最新版本

使用CardView作为父布局.使用android:background="@drawable/your_img",而不是android:src="@drawable/your_img"在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>
Run Code Online (Sandbox Code Playgroud)

  • 如果图像是圆的怎么办? (9认同)

azi*_*ian 6

作为除了澄清BladeCoder的答案:在应用android:outlineProvider="bounds"ImageView将导致阴影来显示。