web-dev-qa-db-fra.com

Comment désactiver l'ombre autour de la vue de la carte dans Android

Bonjour, je travaille sur une application de démonstration dans laquelle j'utilise la vue de carte de la bibliothèque de support. Par défaut, il ajoute une ombre autour de lui. Je veux supprimer cette ombre et devrait ressembler à simple.

J'ai essayé ce qui ne fonctionne pas pour moi.

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

Après avoir fait cela, je reçois un 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" >

Merci d'avance.

41
N Sharma

utiliser cet attribut en XML

card_view:cardElevation="0dp"

et n'oubliez pas d'ajouter xmlns:card_view="http://schemas.Android.com/tools" dans votre mise en page racine.

OUvous pouvez appeler cardView.setCardElevation(0) pour désactiver l’ombre par programmation.

La méthode cardView.setElevation() et l'attribut CardView Android:elevation jetteront Java.lang.NoSuchMethodError sur une plateforme antérieure à Android 5.0.

81
Loyea

Essayez de mettre l'élévation en XML.

app:cardElevation="0dp"

OR

cardView.setCardElevation(0);

Et vérifiez que vous utilisez la dernière bibliothèque CardView.

34
Ashwin S Ashok

Il suffit de mettre cette ligne dans votre CardView: 

app:cardElevation="0dp"

J'espère que cela vous aidera.

8
Brahem Mohamed

Vous devriez d'abord ajouter ceci à la mise en page de votre parent

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

puis réglez l'altitude comme ceci

card_view:cardElevation="0dp"

4
Udo

Vous pouvez l'avoir en XML comme:

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

j'espère que ça vous aide !!!

4
Hetal1311
 <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>
3
Bhavu

essayez comme ça peut vous aider,

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

Vous devez utiliser les attributs suivants

<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>
2
Angel Shah

CardView définit sa propre altitude lors de l'initialisation, ce qui remplacera tout ce que vous aurez défini à partir de XML. Vous devriez le signaler comme un bogue à 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
sachin10

Dans mon cas, seul le réglage de background alpha avec les altitudes suggérées et backgroundColor masque la bordure de l'ombre:

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