我正在开发一个应用程序,希望在Pre L API中对ImageView
或任何View
(支持库中的!CardView)有提升效果。但我无法实现我尝试使用的是android:elevation
属性,但它没有任何效果(无提升)。
我找不到任何API,如果有人指出任何用Pre实现这一点的文档或来自支持库的任何代码片段,我们将非常感谢。
发布于 2015-06-05 10:07:40
如果您想以3D形状设置视图,View.setElevation()
和View.setTranslationZ()
是一个好主意。
但不幸的是,这两个属性和方法是从Android API 21开始引入的。因此,您不能在pre-L或API 21-设备上使用它们。
但是,仍然有一种方法可以自定义视图的阴影和轮廓。
视图背景可绘制的边界决定了其阴影的默认形状。轮廓表示图形对象的外部形状,并定义触摸反馈的波纹区域。
考虑这个视图,定义了一个可绘制的背景:
<TextView
android:id="@+id/myview"
...
android:elevation="2dp"
android:background="@drawable/myrect" />
背景可绘制定义为具有圆角的矩形:
<!-- res/drawable/myrect.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#42000000" />
<corners android:radius="5dp" />
</shape>
视图投射带有圆角的阴影,因为可绘制的背景定义了视图的轮廓。提供自定义轮廓会覆盖视图阴影的默认形状。
要在代码中定义视图的自定义大纲,请执行以下操作:
使用View.setOutlineProvider()
方法将method.
ViewOutlineProvider
新大纲提供程序的getOutline()
扩展到视图。可以使用Outline
类中的方法创建具有圆角的椭圆形和矩形轮廓。视图的默认大纲提供程序从视图的背景中获取大纲。若要防止视图投射阴影,请将其大纲提供程序设置为null
。
希望这能有所帮助。
附言:如果您正在使用android-design-library., yourAppNs:elevation="4dp"
将是一个好主意
发布于 2015-05-30 13:37:16
https://stackoverflow.com/questions/26468087
复制相似问题