首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Pre L中的Android L Elevation效果(仅使用elevation属性)

Pre L中的Android L Elevation效果(仅使用elevation属性)
EN

Stack Overflow用户
提问于 2014-10-20 22:28:37
回答 2查看 7.1K关注 0票数 18

我正在开发一个应用程序,希望在Pre L API中对ImageView或任何View (支持库中的!CardView)有提升效果。但我无法实现我尝试使用的是android:elevation属性,但它没有任何效果(无提升)。

我找不到任何API,如果有人指出任何用Pre实现这一点的文档或来自支持库的任何代码片段,我们将非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2015-06-05 10:07:40

如果您想以3D形状设置视图,View.setElevation()View.setTranslationZ()是一个好主意。

但不幸的是,这两个属性和方法是从Android API 21开始引入的。因此,您不能在pre-L或API 21-设备上使用它们。

但是,仍然有一种方法可以自定义视图的阴影和轮廓。

视图背景可绘制的边界决定了其阴影的默认形状。轮廓表示图形对象的外部形状,并定义触摸反馈的波纹区域。

考虑这个视图,定义了一个可绘制的背景:

代码语言:javascript
复制
<TextView
android:id="@+id/myview"
...
android:elevation="2dp"
android:background="@drawable/myrect" />

背景可绘制定义为具有圆角的矩形:

代码语言:javascript
复制
<!-- 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.

  • Assign
  1. ViewOutlineProvider新大纲提供程序的getOutline()扩展到视图。

可以使用Outline类中的方法创建具有圆角的椭圆形和矩形轮廓。视图的默认大纲提供程序从视图的背景中获取大纲。若要防止视图投射阴影,请将其大纲提供程序设置为null

希望这能有所帮助。

附言:如果您正在使用android-design-library., yourAppNs:elevation="4dp"将是一个好主意

票数 2
EN

Stack Overflow用户

发布于 2015-05-30 13:37:16

  • ViewCompat.setElevation()/getElevation()无法在pre上工作Lollipop.
  • There没有任何值得在支持库中查看的内容,至少在21.1.1版之前是这样的
  • 至于自己创建一个立面效果请看一下this
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26468087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档