如何在toolbar添加阴影

如何在toolbar添加阴影,第1张

在版本小于5.0之前的设备是没有Material Design的特效的,所以也没有阴影;所以这时候就要通过自定义文件来实现。

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

android:shape="rectangle">

<gradient

android:startColor="@android:color/transparent"

android:endColor="#88333333"

android:angle="90"/>

123456789

由文件可以看出,这是一个颜色渐变的过程,然后通过帧布局可以覆盖的特性来实现覆盖在底层布局上的阴影。

CollapsingToolbarLayout处于折叠状态(Collapsed)状态时,所含Toolbar下方默认会出现阴影,该阴影并非内部Toolbar的阴影,而是外部AppLayout的阴影,所以要修改这个阴影就需要处理AppBarLayout。5.0以下的系统可以通过设置app:elevetion来产生阴影,5.0以上系统则没有效果,设了该属性反而所有阴影都会消失。

查看AppBarLayout源码,发现getTargetElevation()方法已经废弃了,永远返回0,setTargetElevation()也废弃了,看一下说明和所留下的保底实现:

也就是说现在Elevation这个属性需要通过StateListAnimator的方式来设置。下面的保底方法点进去看一下:

我们可以模仿这里的方式,通过5.0后推荐的ObjectAnimator方式添加阴影,如果要在xml中设置的话,就需要新建一个Drawable资源(这里名叫appbar_elevation.xml):

然后为AppBarLayout设置stateListAnimator属性:

这样就可以了。

For Android 5.0, if you want to set it directly into a style use: 0dp and for Support library compatibility use: 0dp Example of style for a AppCompat light theme: 0dp Then apply this custom ActionBar style to you app theme: @st。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11736515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存