如何为Android EditText添加模糊阴影?已绘制Shape但不知对应属性
给EditText添加模糊阴影的正确实现方法
我懂你现在的困扰——用layer-list做了背景但没得到想要的模糊阴影效果对吧?其实问题大概率出在阴影层的属性设置上,咱们直接来修正你的drawable文件,一步步实现自然的模糊阴影:
完整的Drawable代码实现
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 模糊阴影层 --> <item android:left="2dp" android:right="2dp" android:top="4dp" android:bottom="4dp"> <shape android:shape="rectangle"> <!-- 半透明深灰色阴影,前两位是透明度,数值越小越淡 --> <solid android:color="#44000000" /> <!-- 圆角需与下方输入框本体保持一致 --> <corners android:radius="8dp" /> <!-- 利用padding让阴影有扩散模糊的空间 --> <padding android:left="1dp" android:right="1dp" android:top="1dp" android:bottom="1dp" /> </shape> </item> <!-- EditText本体层 --> <item android:left="2dp" android:right="2dp" android:top="2dp"> <shape android:shape="rectangle"> <!-- 输入框背景色,这里用白色 --> <solid android:color="#FFFFFF" /> <!-- 和阴影层统一圆角,避免错位 --> <corners android:radius="8dp" /> <!-- 可选:给输入框加细边框提升质感 --> <stroke android:width="1dp" android:color="#EEEEEE" /> <!-- 内边距,让输入内容不贴边框 --> <padding android:left="16dp" android:top="12dp" android:right="16dp" android:bottom="12dp" /> </shape> </item> </layer-list>
关键细节说明
- 阴影层偏移:通过
android:left/right/top/bottom控制阴影的位置,一般向下、向右偏移模拟真实光影,数值可以根据需求调整 - 阴影颜色选择:一定要用半透明的深色(比如
#44000000),纯黑阴影会显得很生硬,透明度数值越小,阴影越柔和 - 圆角一致性:阴影层和输入框本体的圆角必须完全相同,否则会出现阴影和框体错位的情况
- 兼容性优化:这种layer-list的方式在所有Android版本都能正常工作,如果你的应用只适配API 28+,也可以直接给EditText设置
android:shadowRadius、android:shadowColor等属性,但兼容性会差一些
最后注意事项
把这个drawable设置为EditText的android:background后,记得去掉EditText默认的android:elevation属性,不然系统默认的阴影会和你自定义的阴影冲突,导致显示异常。
内容的提问来源于stack exchange,提问作者BlackAndWhite
相关产品推荐
相关产品推荐

