我想将阴影应用于ImageView
。当我将阴影应用于TextView
我得到了它但是同样没有达到ImageView
。我该如何解决这个问题?
答案 0 :(得分:5)
我们也可以使用提供圆角背景和阴影的CardView。要使用它,您需要将v7 CardView library作为依赖项添加到build.gradle中的项目,如下所示。
dependencies {
compile 'com.android.support:cardview-v7:23.0.1'
-------
}
注意:使用受尊重的版本更改上一行中的
23.0.1
。
因此我将ImageView
与CardView
包围,以制作如下阴影。
<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>
它会在图像周围添加阴影。
注意:我不知道这是否是一个好的解决方法。我是初学者。一世 试图实现
CardView
,它提供了实现的想法 同样的。如果不好,请告诉我原因。
答案 1 :(得分:2)
这取自Romain Guy在Devoxx的演讲,pdf发现here。
Paint mShadow = new Paint();
// radius=10, y-offset=2, color=black
mShadow.setShadowLayer(10.0f, 0.0f, 2.0f, 0xFF000000);
// in onDraw(Canvas)
canvas.drawBitmap(bitmap, 0.0f, 0.0f, mShadow);
希望这有帮助。
备注强>
不要忘记Honeycomb及以上你需要调用setLayerType(LAYER_TYPE_SOFTWARE, mShadow)
,否则你将看不到你的影子! (@Dmitriy_Boichenko)
SetShadowLayer
不适用于硬件加速,因此大大降低了性能(@Matt Wear)
摘自Here
对于Api大于21。 您可以在imageview或按钮中尝试xml:Read here at developer site
android:elevation="5dp"
答案 2 :(得分:1)
您可以创建一个可绘制的图层列表,并将两个项目(drawables)放入其中以获取图像和阴影。
你的影子项目位置&amp;内容可能会根据您想要应用阴影的位置(顶部,左侧,右侧,右侧和左侧等)和阴影样式而改变。
答案 3 :(得分:1)
创建文件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 。
答案 4 :(得分:0)
用于圆形图像的阴影
<de.hdodenhof.circleimageview.CircleImageView
android:src="@drawable/ic_your_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:elevation="8dp"
android:layout_marginTop="32dp"
android:id="@+id/imageView"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"/>
依赖性:
implementation 'de.hdodenhof:circleimageview:3.0.0'
输出:
答案 5 :(得分:0)
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>
答案 6 :(得分:0)
您可以使用属性outlineSpotShadowColor
将阴影设为 true ,尝试使用setOutlineSpotShadowColor
的{{1}}并将@color/black
增加到12dp
使用elevation
将阴影置于 false setOutlineSpotShadowColor
并减小@android:color/transparent