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

CardView在Android L中不显示阴影

姚智
2023-03-14

我的Cardview在Listview中没有显示Android L(Nexus 5)中的阴影。此外,圆边未正确显示。以下是Listview的适配器视图的代码:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res/com.example.myapp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardBackgroundColor="@android:color/white"
    android:foreground="?android:attr/selectableItemBackground"
    app:cardCornerRadius="4dp"
    app:cardElevation="4dp" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingTop="@dimen/activity_vertical_margin" >

        <TextView
            android:id="@+id/tvName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginTop="@dimen/padding_small"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <ImageView
            android:id="@+id/ivPicture"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/tvName"
            android:layout_centerHorizontal="true"
            android:scaleType="fitCenter" />

        <TextView
            android:id="@+id/tvDetail"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/ivPicture"
            android:layout_centerHorizontal="true"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin" />
    </RelativeLayout>
</android.support.v7.widget.CardView>

以及ListView xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res/com.example.myapp"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/app_bg" >

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:cacheColorHint="#00000000"
    android:divider="@android:color/transparent"
    android:drawSelectorOnTop="true"
    android:smoothScrollbar="true" />

<ProgressBar
    android:id="@+id/progressBarMain"
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:visibility="gone" /></RelativeLayout>

它适用于具有适当阴影和圆角的pre-L设备。但在AndroidL设备上无法工作。你能告诉我这里缺少什么吗?

共有3个答案

陶富
2023-03-14

在您的cardview中使用app:cardUseCompatPadding=“true”。例如

<android.support.v7.widget.CardView
        android:id="@+id/card_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginRight="@dimen/cardviewMarginRight"
        app:cardBackgroundColor="@color/menudetailsbgcolor"
        app:cardCornerRadius="@dimen/cardCornerRadius"
        app:cardUseCompatPadding="true"
        app:elevation="0dp">
    </android.support.v7.widget.CardView>
黄涵畅
2023-03-14

不要忘记,要绘制阴影,必须使用hardwareAccelerateddrawing

hardwareAccelerated=true

hardwareAccelerated=false

有关详细信息,请参阅Android硬件加速

南宫胡媚
2023-03-14

在再次查看文档之后,我终于找到了解决方案。

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

结果是,CardView中的内容区域在pre-lollipop和lollipop设备上采用不同的大小。因此,在Lollipop设备中,阴影实际上被卡所覆盖,因此不可见。通过添加此属性,内容区域在所有设备上保持不变,阴影变得可见。

我的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="2dp"
    card_view:cardUseCompatPadding="true"
    >
...
</android.support.v7.widget.CardView>
 类似资料:
  • 我正在使用cardview,但问题是我的CardView没有显示任何海拔或阴影。我已经尝试了stackoverflow答案中建议的一些方法,比如我尝试过使用海拔和阴影属性。我也尝试过使用card_view: cardUseCompatPadd="true",但没有任何成功。这是我的xml文件 不知道为什么它没有显示任何高度和阴影

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

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

  • (1个屏幕截图-ImageView可见,2个屏幕截图-消失) 当使用和时,我们可以说阴影根本不可见(尤其是在smartphone显示器上) 没有任何影响(0dp、5dp或20dp-没有任何变化),所以我只将其设置为0dp 更新 我设置和没有进展...和使我的图像高度变小,现在我在左/右有黑条

  • 我刚刚接触Android,最近我在我的应用程序中添加了一个CardView来显示一些文本框和图像,效果很好。 然而,当我试图显示视频时,卡仍然是空的。有人能帮我理解我做错了什么吗? 我这样定义了图像视图: 最初,我尝试将视频设置为相关活动的onCreate,如下所示: 那不起作用,不知道为什么。所以从相关的中,我使用从URL获取视频。由于UI更改,在onProgressMethod中使用相同的代码

  • 我在我的android应用程序中使用cardview。然而,阴影并没有显现出来。下面是xml布局 默认选项Smenu阴影也不显示。