Android控件阴影
-
使用Android21之后新的控件属性elevation和translationZ
类似:
<TextView android:layout_width="100dp" android:layout_height="48dp" android:layout_margin="10dp" android:background="@drawable/shape_white1" android:translationZ="3dp" android:elevation="6dp" />
要注意要想让该属性生效必须给控件设置背景且需要在父控件留有外边距空间,否则没有阴影或者阴影不显示。
如果不设置background属性,可以指定android:outlineProvider="bounds"这样也可以出现阴影,但是控件会被添加上白色背景。
几种情形:
如果想要在Android21以下实现阴影,可以使用layer-list进行图层叠加实现:
<layer-list>
<item>
<shape android:shape="rectangle">
<padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0dp" />
<solid android:color="#00cccccc" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0dp" />
<solid android:color="#05cccccc" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0dp" />
<solid android:color="#08cccccc" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0dp" />
<solid android:color="#10cccccc" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0dp" />
<solid android:color="#c0cccccc" />
</shape>
</item>
<item android:bottom="0dp" android:left="0.5dp" android:right="0dp" android:top="0dp">
<shape android:shape="rectangle">
<solid android:color="@color/white" />
</shape>
</item>
</layer-list>