如何在android中禁用卡片视图周围的阴影

时间:2014-11-06 09:40:34

标签: android android-cardview

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

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

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)

layout.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" >

提前致谢。

12 个答案:

答案 0 :(得分:89)

在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

答案 1 :(得分:38)

尝试将高程放在Xml中。

app:cardElevation="0dp"

OR

cardView.setCardElevation(0);

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

答案 2 :(得分:11)

只需将此行放入您的CardView:

app:cardElevation="0dp"

希望它会对你有所帮助。

答案 3 :(得分:4)

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

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

然后像这样设置高程

card_view:cardElevation="0dp"

答案 4 :(得分:4)

您可以在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>
希望它可以帮助你!!!

答案 5 :(得分:4)

使用 app:cardElevation =“ 0dp” ,请勿使用 pp:elevation =“ 0dp”

答案 6 :(得分:3)

尝试这样可以帮到你,

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

答案 7 :(得分:3)

GoogleMap

答案 8 :(得分: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>

答案 9 :(得分:1)

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

card_layout.cardElevation = 0F

答案 10 :(得分: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));
}

答案 11 :(得分:0)

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

 this.setCardElevation(0);
 this.setCardBackgroundColor(getContext().getResources().getColor(android.R.color.transparent));
 this.getBackground().setAlpha(0);