Reputation: 34507
I am working on demo application in which I am using the card view of the support library. By default, it is adding a shadow around it. I want to remove this shadow & should looks like simple.
I tried this (not working for me):
CardView cardView = (CardView) v.findViewById(R.id.cardView);
cardView.setElevation(0);
After doing these I am getting crash
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" >
Upvotes: 114
Views: 105771
Reputation: 41
Attenion: Attribute outlineSpotShadowColor is only used in API level 28 and higher
app:cardElevation="0dp"
android:outlineSpotShadowColor="@android:color/transparent"
Upvotes: 3
Reputation: 4171
If anyone is looking for kotlin answer then this worked for me
card_layout.cardElevation = 0F
Upvotes: 4
Reputation: 1585
In my case, only setting of background alpha with suggested elevation and backgroundColor hide shadow border:
this.setCardElevation(0);
this.setCardBackgroundColor(getContext().getResources().getColor(android.R.color.transparent));
this.getBackground().setAlpha(0);
Upvotes: 3
Reputation: 392
Just put this line inside your CardView:
app:cardElevation="0dp"
Hope it will help you.
Upvotes: 21
Reputation: 3663
Try to put the elevation in Xml.
app:cardElevation="0dp"
OR
cardView.setCardElevation(0);
And check you are using the latest CardView library.
Upvotes: 98
Reputation: 51
You have to use the following attributes
<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>
Upvotes: 4
Reputation: 364
You can have it in XML like:
<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>
hope it helps you !!!
Upvotes: 9
Reputation: 51
<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>
Upvotes: 5
Reputation: 3569
use this attribute in XML
card_view:cardElevation="0dp"
and remember add xmlns:card_view="http://schemas.android.com/tools"
in your root layout.
OR you can call cardView.setCardElevation(0)
to disable shadow programmatically.
cardView.setElevation()
method and CardView attribute android:elevation
will throw java.lang.NoSuchMethodError in platform before Android 5.0
Upvotes: 174
Reputation: 1157
You should first add this to the your parent layout
xmlns:card_view="http://schemas.android.com/tools"
then set the elevation like this
card_view:cardElevation="0dp"
Upvotes: 5
Reputation: 6444
CardView sets its own elevation during initialization, which will override whatever you set from XML. You should file this as a bug at 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));
}
Upvotes: 0
Reputation: 3322
try like this may help you,
CardView cardView = (CardView) v.findViewById(R.id.cardView);
cardView.setCardElevation(0);
Upvotes: 5