Android 如何将阴影应用于ImageView?
我想将阴影应用于Android 如何将阴影应用于ImageView?,android,android-imageview,textview,shadow,Android,Android Imageview,Textview,Shadow,我想将阴影应用于图像视图。当我将阴影应用到TextView时,我得到了阴影,但同样的阴影没有应用到ImageView。如何解决此问题?我们还可以使用提供圆角背景和阴影的。要使用它,您需要将作为依赖项添加到build.gradle中的项目中,如下所示 dependencies { compile 'com.android.support:cardview-v7:23.0.1' ------- } 注:将上述行中的23.0.1更改为受尊重的版本 因此,我用cardwiew包围了Im
图像视图
。当我将阴影应用到TextView
时,我得到了阴影,但同样的阴影没有应用到ImageView
。如何解决此问题?我们还可以使用提供圆角背景和阴影的。要使用它,您需要将作为依赖项添加到build.gradle中的项目中,如下所示
dependencies {
compile 'com.android.support:cardview-v7:23.0.1'
-------
}
注:将上述行中的23.0.1
更改为受尊重的版本
因此,我用cardwiew
包围了ImageView
,使阴影如下图所示
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardBackgroundColor="@android:color/white">
<ImageView
android:id="@+id/dish_image"
android:layout_width="match_parent"
android:layout_height="120dp"
android:adjustViewBounds="true" />
</android.support.v7.widget.CardView>
它将在图像周围添加阴影
注意:我不知道这是否是一个好的解决方法。我是初学者。我
尝试实现cardwiew
,它给出了实现的想法
这个也一样。如果不好,请告诉我原因
这是罗曼·盖伊在Devxx的演讲,pdf格式 希望这有帮助 注释 不要忘记,对于蜂窝和更高版本,您需要调用
setLayerType(LAYER\u TYPE\u SOFTWARE,mShadow)
,否则您将看不到自己的影子!(@Dmitriy_Boichenko)
SetShadowLayer
不幸的是,它不能与硬件加速一起工作,因此会大大降低性能(@Matt Wear)
答案取自
对于大于21的Api。
您可以在imageview或按钮中尝试使用xml:
您可以创建一个可绘制的图层列表,并将图像和阴影的两个项目(可绘制)放入其中
您的阴影项目的位置和内容可能会根据您要应用阴影的位置(顶部、左侧、右侧、右侧和左侧等)和阴影样式而变化 创建一个shadow_rect.xml文件
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item >
<shape
android:shape="rectangle">
<solid android:color="@android:color/darker_gray" />
<corners android:radius="0dp"/>
</shape>
</item>
<item android:right="1dp" android:bottom="2dp">
<shape
android:shape="rectangle">
<solid android:color="@android:color/white"/>
<corners android:radius="1dp"/>
</shape>
</item>
</layer-list>
然后在Imageview中使用它作为android:background=“@drawable/shadow\rect。Imageview
<ImageView
......
android:elevation="2dp"
android:background="@drawable/myrect"/>
背景可绘制定义为具有圆角的矩形:
<!-- res/drawable/myrect.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#42000000" />
<corners android:radius="5dp" />
</shape>
您可以使用适当的
outlineSpotShadowColor
要将阴影设置为true请使用@color/black
尝试setOutlineSpotShadowColor
,并将高程增加到12dp
要使用@android:color/transparent
将阴影设置为falsesetOutlineSpotShadowColor
,并降低高程
我想您正在寻找这个:我希望这会对您有所帮助。我可能错了,但您使用的是“文本阴影”“在TextView
上。这很好。您需要的是ImageView
上的“框阴影”。我认为这是不存在的。您需要构建一个自定义背景,看起来像阴影来实现这一点。可能的android:elevation=“2dp”
副本有时已经足够好了。似乎android:elevation
只有在定义了android:background
的情况下才有效。如果不定义两者,我就不会得到任何阴影。card\u view
是如何声明的?…与app
xmlns通常是如何声明的一样。circle ImageView呢?@user924我在很长一段时间后看到了这个答案:-)。Cardview内部为高端设备使用立面。对于低端设备,它使用画布上的自定义图形。因此,更好地在源代码中获取更多信息。我将花一些时间更新答案。android:elevation
似乎对ImageViewElevation不起作用api 21中添加了elevation。您可能正在使用较低版本。使用较低api版本的卡布局。我使用的是api 24。提升在大多数情况下似乎都可以正常工作,但在ImageView上不行。什么是位图
?您的ImageView将具有匹配的父级高度和宽度,请尝试提供边距或填充。因为立面将隐藏在其他布局后面。您是否试图理解OP的要求?
<ImageView
......
android:elevation="2dp"
android:background="@drawable/myrect"/>
<!-- res/drawable/myrect.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#42000000" />
<corners android:radius="5dp" />
</shape>