当前位置: 首页 > 知识库问答 >
问题:

Android“Elevation”不显示阴影

谢选
2023-03-14

我有一个ListView,对于每个列表项,我都希望它在下面显示一个阴影。我正在使用Android Lollipop的新elevation特性在我想投下阴影的视图上设置Z,并且已经在ActionBar(严格来说是Lollipop中的工具栏)中有效地做到了这一点。我正在使用Lollipop的提升,但出于某种原因,它没有在列表项下显示阴影。以下是如何设置每个列表项的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    style="@style/block"
    android:gravity="center"
    android:layout_gravity="center"
    android:background="@color/lightgray"
    >

    <RelativeLayout
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_marginLeft="40dp"
        android:layout_marginRight="40dp"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:elevation="30dp"
        >

        <ImageView
            android:id="@+id/documentImageView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop" />

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/alphared"
            android:layout_alignParentBottom="true" >

            <appuccino.simplyscan.Extra.CustomTextView
                android:id="@+id/documentName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColor="@color/white"
                app:typeface="light"
                android:paddingLeft="16dp"
                android:paddingTop="8dp"
                android:paddingBottom="4dp"
                android:singleLine="true"
                android:text="New Document"
                android:textSize="27sp"/>

            <appuccino.simplyscan.Extra.CustomTextView
                android:id="@+id/documentPageCount"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColor="@color/white"
                app:typeface="italic"
                android:paddingLeft="16dp"
                android:layout_marginBottom="16dp"
                android:text="1 page"
                android:textSize="20sp"/>

        </LinearLayout>

    </RelativeLayout>

</RelativeLayout>

我也尝试了以下几种做法,但都无济于事:

  1. 将提升设置为ImageView和TextViews本身,而不是父布局。
  2. 将背景应用于ImageView。
  3. 使用TranslationZ代替Elevation。

共有1个答案

葛承嗣
2023-03-14

我在Lollipop上玩了一段时间,这是我的发现:

  1. 父级viewgroup的边界似乎出于某种原因切断了其子级的阴影;和
  2. Android:Elevation设置的阴影由 视图的边界而不是扩展到边距的边界截断;
  3. 让子视图显示阴影的正确方法是在父视图上设置填充,并在父视图上设置Android:cliptopadding=“false”

根据我所知,以下是我给你的建议:

    null
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    style="@style/block"
    android:gravity="center"
    android:layout_gravity="center"
    android:background="@color/lightgray"
    android:paddingLeft="40dp"
    android:paddingRight="40dp"
    android:paddingTop="20dp"
    android:paddingBottom="20dp"
    android:clipToPadding="false"
    >
<RelativeLayout
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:background="[some non-transparent color]"
    android:elevation="30dp"
    >
 类似资料:
  • 我的Cardview在Listview中没有显示Android L(Nexus 5)中的阴影。此外,圆边未正确显示。以下是Listview的适配器视图的代码: 以及ListView xml: 它适用于具有适当阴影和圆角的pre-L设备。但在AndroidL设备上无法工作。你能告诉我这里缺少什么吗?

  • 把我的代码精简到最小的例子: 主要活动。xml 我需要那个布局结构。 主要活动。JAVA 阴影在Android Studio designer中可见: 但未在运行时显示: 测试日期: Genymotion谷歌Nexus 5X-Marshmallow6.0.0-API 23 都是一样的结果。 我正在使用: Android Studio 2.1.2 请在Andriod Studio中创建一个新项目,清

  • 我在这里检查了一大堆答案,仍然没有骰子。Android Studio预览显示阴影,但没有显示5.1.1 Nexus 7。 这是我的XML 所以我使用了cardUseCompatPadding(也在这里),检查了文档,确保卡片有边距。。。。没有骰子。 我在https://gist.github.com/tigerhawkvok/0ca3d1f402afa29642d5发布了整个XML文件。 帮助

  • 描述 (Description) elevation属性描述了声源沿着收听者环境垂直轴的位置。 可能的值 (Possible Values) angle - 角度值在-90deg到90deg的范围内。 角度值0deg对应于与收听者齐平的点,而90deg对应于正上方的点,并且直接位于下方的-90deg。 above - 相当于值90deg。 level - 相当于0deg的值。 below - 相当

  • 我正在使用cardview,但问题是我的CardView没有显示任何海拔或阴影。我已经尝试了stackoverflow答案中建议的一些方法,比如我尝试过使用海拔和阴影属性。我也尝试过使用card_view: cardUseCompatPadd="true",但没有任何成功。这是我的xml文件 不知道为什么它没有显示任何高度和阴影

  • 如何为线性布局显示阴影。我想要白色圆形背景,线条布局周围有阴影。到目前为止,我已经这样做了。 和rounded\u rect\u形状。xml目录下的xml