<?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。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)