使用Android阴影属性踩到的那些坑……
在做项目的时候,对于fragment中一个圆角按钮设置阴影效果时连跌好几次,特此记录。
- 阴影不生效
原本一个普普通通的阴影效果,只需要在xml文件中设置属性android:elevation=”10dp”即可,可以通过设置这个大小来改变阴影的效果。这个属性大概是设的控件的高度,把控件抬起来就可以看到效果。
如果你发现根本不起作用,那可能是因为
- 缺少一个背景控件去承接这个控件的投影,所以阴影看不出来。那解决自然就是在这个阴影下面再衬上一个布局,但注意,这个布局必须要大于控件,不可以设成wrap_content,如果布局和控件一样大,它怎么承接控件投下来的阴影。
- 这个控件的背景是透明的。由于我们在适配多分辨率屏幕的时候喜欢用布局去套住诸多控件以防止多分辨率情况下控件错位。而如果你不小心设置的elevation属性是设给这个布局的,那就有可能在你看来这块东西明明是有东西的,但是什么阴影都看不到。这个问题就在我做tips的时候遇到的。
- 阴影不随控件形状
当你使用了自定义的控件形状,例如圆角按钮,却发现明明按钮是圆角的,但还是在四个角出现了一点阴影效果,不要怀疑是系统的问题,有可能是圆角控件所在的布局为wrap_content,布局正好框住了控件,留出了四个角。由于阴影呈现也需要控件,这就导致别的地方没有出现阴影,而正好缺了的四个角有位置承接阴影。造成了圆角控件阴影效果失效的假象。
顺便说一句,在布局xml文件的时候,Android studio的预览效果确实有时候合适有时候不合适,一设置完elevation后就可以看到阴影,那在手机上也能看到,如果看不到那就再去排除布局的问题吧。如果设置完elevation看不到阴影,那手机上也不会看到。
(可能是我比较菜,普通的布局居然能让我玩出这么多坑来,折腾了我一天,以上的问题全都被我遇到了,开心~)