90

您好,我正在开发演示应用程序,其中我正在使用支持库的卡片视图。默认情况下,它会在其周围添加阴影。我想去掉这个阴影,看起来应该很简单。

我试过这个对我不起作用。

CardView cardView = (CardView) v.findViewById(R.id.cardView);
cardView.setElevation(0);

做完这些后我崩溃了

11-06 15:12:17.018: E/AndroidRuntime(24315): FATAL EXCEPTION: main
11-06 15:12:17.018: E/AndroidRuntime(24315): Process: com.xyz, PID: 24315
11-06 15:12:17.018: E/AndroidRuntime(24315): java.lang.NoSuchMethodError: android.support.v7.widget.CardView.setElevation
11-06 15:12:17.018: E/AndroidRuntime(24315):    at com.xyz.adapters.RecycleViewAdapter.onCreateViewHolder(RecycleViewAdapter.java:85)
11-06 15:12:17.018: E/AndroidRuntime(24315):    at com.xyz.adapters.RecycleViewAdapter.onCreateViewHolder(RecycleViewAdapter.java:1)
11-06 15:12:17.018: E/AndroidRuntime(24315):    at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:2915)
11-06 15:12:17.018: E/AndroidRuntime(24315):    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:2511)
11-06 15:12:17.018: E/AndroidRuntime(24315):    at android.support.v7.widget.LinearLayoutManager$RenderState.next(LinearLayoutManager.java:1425)
11-06 15:12:17.018: E/AndroidRuntime(24315):    at android.support.v7.widget.LinearLayoutManager$RenderState.next(LinearLayoutManager.java:1425)

布局.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/apk/res/com.xyz"
    android:id="@+id/cardView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:orientation="horizontal" >

提前致谢。

4

13 回答 13

152

在 XML 中使用此属性

card_view:cardElevation="0dp"

并记住添加xmlns:card_view="http://schemas.android.com/tools"您的根布局。

或者您可以调用cardView.setCardElevation(0)以编程方式禁用阴影。

cardView.setElevation()方法和 CardView 属性android:elevation将在 Android 5.0 之前的平台中抛出 java.lang.NoSuchMethodError

于 2014-12-29T11:40:21.913 回答
80

尝试将海拔高度放在 Xml 中。

app:cardElevation="0dp"

或者

cardView.setCardElevation(0);

并检查您使用的是最新的 CardView 库。

于 2014-11-06T09:57:07.220 回答
42

使用app:cardElevation="0dp",不要使用pp:elevation="0dp"

于 2019-10-26T08:26:47.543 回答
18

只需将此行放在您的 CardView 中:

app:cardElevation="0dp"

希望它会帮助你。

于 2017-12-04T10:29:16.153 回答
9

您可以在 XML 中使用它,例如:

<android.support.v7.widget.CardView
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="2dp"
    android:layout_marginRight="2dp"
    app:cardElevation="0dp"
    app:cardCornerRadius="0.5dp"
    app:cardPreventCornerOverlap="false"
    app:cardUseCompatPadding="true"
    >
   </android.support.v7.widget.CardView>

希望对你有帮助!!!

于 2017-04-01T18:28:41.733 回答
5

您应该首先将其添加到您的父布局

xmlns:card_view="http://schemas.android.com/tools"

然后像这样设置海拔

card_view:cardElevation="0dp"

于 2015-12-22T07:08:31.693 回答
5
 <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:cardElevation="0dp"
        app:cardCornerRadius="2dp">
....`
 </android.support.v7.widget.CardView>
于 2016-10-21T04:39:16.223 回答
4

试试这样可能对你有帮助,

CardView cardView = (CardView) v.findViewById(R.id.cardView);
cardView.setCardElevation(0);
于 2014-11-06T09:47:40.510 回答
4

如果有人正在寻找 kotlin 答案,那么这对我有用

card_layout.cardElevation = 0F
于 2019-11-11T09:35:42.523 回答
3

在我的情况下,只有具有建议高度和 backgroundColor 的背景 alpha 设置隐藏阴影边框:

 this.setCardElevation(0);
 this.setCardBackgroundColor(getContext().getResources().getColor(android.R.color.transparent));
 this.getBackground().setAlpha(0);
于 2018-03-21T11:05:22.337 回答
2

您必须使用以下属性

<android.support.v7.widget.CardView
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardElevation="0dp"
    app:cardCornerRadius="0.5dp"
    app:cardPreventCornerOverlap="false"
    >
   </android.support.v7.widget.CardView>
于 2017-05-31T18:21:13.277 回答
0

CardView 在初始化期间设置自己的高度,这将覆盖您从 XML 设置的任何内容。您应该将此作为错误提交到chek this

@Override
public void initialize(CardViewDelegate cardView, Context context, int backgroundColor,
        float radius) {
    cardView.setBackgroundDrawable(new RoundRectDrawable(backgroundColor, radius));
    View view = (View) cardView;
    view.setClipToOutline(true);
    view.setElevation(context.getResources().getDimension(R.dimen.cardview_elevation));
}
于 2014-11-06T10:18:29.987 回答
0
app:cardElevation="0dp"
android:outlineSpotShadowColor="@android:color/transparent"
于 2021-08-27T17:34:00.833 回答