Android Lollipop上的提升无法正常工作

Mor*_*itz 26 android android-5.0-lollipop

我想在最新的Android Lollipop预览版中使用elevation属性.我将targetSdk设置为21,将主题设置为Material.接下来,我将一个背景形状添加到TextView并将高程设置为8dp,但TextView没有显示任何阴影的迹象.这是在运行棒棒糖预览的Nexus7上.还有什么我需要考虑的吗?

这是布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent">

  <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:background="@drawable/rect"
      android:text="hallo world"
      android:padding="8dp"
      android:elevation="8dp" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这是背景可绘制的:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
    <solid android:color="#7d0073ff" />
    <corners android:radius="16dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)

这是TextView:

Android升级

rla*_*ay3 59

出于某种原因,如果使用透明度设置纯色,则不会显示高程阴影.

在你的例子中,我将#7d0073ff更改为#0073ff,我得到了一个阴影.

这可能是一个错误,因为在他们的文档中它使用半透明的背景颜色给出了类似的例子.

  • 此错误发生在[Android问题跟踪器]上(https://code.google.com/p/android/issues/detail?id=78248) (2认同)

Ram*_*tra 18

在再次浏览文档后,我终于找到了解决方案.

只需添加card_view:cardUseCompatPadding="true"到您的CardView阴影将出现在Lollipop设备上.

发生的事情是,在CardView棒棒糖前和棒棒糖设备上采用不同大小的内容区域.因此,在棒棒糖设备中,阴影实际上被卡覆盖,因此它不可见.通过添加此属性,内容区域在所有设备上保持不变,阴影变为可见.

我的xml代码如下:

<android.support.v7.widget.CardView
    android:id="@+id/media_card_view"
    android:layout_width="match_parent"
    android:layout_height="130dp"
    card_view:cardBackgroundColor="@android:color/white"
    card_view:cardElevation="2sp"
    card_view:cardUseCompatPadding="true"
    >
...
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)

  • card_view:cardUseCompatPadding ="true"为我工作.事情就是在棒棒糖前设备上显示了阴影,但它没有在Lollipop设备上显示[Nexus 9]. (4认同)

Inf*_*eus 17

将android:高程阴影添加到ImageView:

android:clipToPadding="false"
+
android:outlineProvider="bounds"
+
android:elevation="2dp"
Run Code Online (Sandbox Code Playgroud)


vca*_*ra1 9

我也有这个问题,事实证明,你需要在Android清单中打开硬件加速

<application
  ...
  android:hardwareAccelerated="true">
Run Code Online (Sandbox Code Playgroud)