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

N S*_*rma 55 android android-cardview

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

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

CardView cardView = (CardView) v.findViewById(R.id.cardView);
cardView.setElevation(0);
Run Code Online (Sandbox Code Playgroud)

做完这些之后我就崩溃了

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)
Run Code Online (Sandbox Code Playgroud)

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" >
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Loy*_*yea 99

在XML中使用此属性

card_view:cardElevation="0dp"
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 我使用`http:// schemas.android.com/apk/res-auto`进行命名空间定义,它起作用了.`http:// schemas.android.com/tools`对我没用.谁知道原因? (2认同)
  • 不要使用card_view:cardElevation。将其替换为app:cardElevation (2认同)
  • @AhamadullahSaikat 答案对我有用。我正在使用 Androidx 库 (2认同)

Ash*_*hok 47

尝试将高程放在Xml中.

app:cardElevation="0dp"
Run Code Online (Sandbox Code Playgroud)

要么

cardView.setCardElevation(0);
Run Code Online (Sandbox Code Playgroud)

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


Ras*_*iri 39

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


小智 12

只需将此行放入CardView中:

app:cardElevation="0dp"
Run Code Online (Sandbox Code Playgroud)

希望它会对你有所帮助.


Aka*_*iya 5

尝试这样可能会帮助你,

CardView cardView = (CardView) v.findViewById(R.id.cardView);
cardView.setCardElevation(0);
Run Code Online (Sandbox Code Playgroud)


Udo*_*Udo 5

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

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

然后像这样设置高程

card_view:cardElevation="0dp"


小智 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>
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以使用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>
Run Code Online (Sandbox Code Playgroud)

希望对您有帮助!