2014-11-06 68 views
31

中禁用卡片視圖周圍的陰影您好,我正在使用演示應用程序,其中我正在使用支持庫的卡片視圖。默認情況下它會在它周圍添加陰影。我想刪除這個影子&應該看起來很簡單。如何在android

我試過這個不適合我的工作。

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

在此先感謝。

回答

2

嘗試這樣可以幫助你,

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

有沒有這樣的方法'setCardElevation' – 2014-11-06 09:51:01

+0

這種方法是最新的庫中可用,但是當我使用新的庫,然後我得到這個http://stackoverflow.com/questions/26675682/exception-android-view-inflateexception- binary-xml-file-line-2-error-inflat – 2014-11-06 10:03:36

18

嘗試把海拔XML。

app:cardElevation="0dp" 

OR

cardView.setCardElevation(0); 

並檢查你使用的是最新CardView庫。

+0

這些屬性在最新的庫中可用,但當我使用最新的然後我的應用程序崩潰與此http://stackoverflow.com/questions/26675682/exception-android-view- inflateexception-binary-xml-file-line-2-error-inflat – 2014-11-06 10:03:09

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)); 
} 
+0

其中我重寫了這段代碼? – 2014-11-06 10:46:10

+0

@Williams這是CardView源代碼 - 如果你想創建自己的CardView – d4c0d312 2016-09-01 05:16:42

64

使用XML

card_view:cardElevation="0dp" 

文件這個bug這個屬性,記住在你的根佈局添加xmlns:card_view="http://schemas.android.com/tools"

您可以撥打cardView.setCardElevation(0)以編程方式禁用陰影。

cardView.setElevation()方法和CardView屬性android:elevation將拋出java.lang.NoSuchMethodError在Android平臺5.0之前

+1

這應該被接受爲正確的答案。我有同樣的問題,並修復了這個問題。 – superpuccio 2015-05-15 08:53:38

+0

我使用'http:// schemas.android.com/apk/res-auto'來命名空間定義,並且它工作。 'http:// schemas.android.com/tools'不適合我。有人知道原因嗎? – 2017-03-27 10:43:53

+0

@CerlinBoss你的命名空間前綴是什麼? 'card_view'或'app'? – Loyea 2017-03-27 10:59:01

3

你應該首先將其添加到您的父母佈局

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

然後設置海拔像此

card_view:cardElevation="0dp"

3
<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> 
+1

添加一些解釋與答案如何這個答案幫助OP在修復當前問題 – 2016-10-21 05:13:35

+1

請不要重複的答案。多個問題的答案可能相同,即使你沒有改變。即使你發現類似的問題,而不是複製你的答案,你應該提到一個下面的問題鏈接。重複[這裏](http://stackoverflow.com/questions/36624954/android-4-4-remove-shadow-from-cardview/40168570#40168570) – 2016-10-21 05:16:36

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> 

希望它可以幫助你!

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> 
1

只是把這個線你CardView內:

app:cardElevation="0dp" 

希望它會幫助你。