RecyclerView überlappend ohne Schatten

Ich möchte eine Liste wie dieses Bild entwickeln

Bildbeschreibung hier eingeben

  • Wie man die Auflistung der Listview-Item-Trennlinie zuweist
  • Android Studio - ADB Error - "... Gerät nicht autorisiert. Bitte überprüfen Sie den Bestätigungsdialog auf Ihrem Gerät. "
  • So fügen Sie Limitklausel mit Content Provider hinzu
  • Wofür wird cursor.setNotificationUri () verwendet?
  • Verhindern, dass die Aktivität zerstört wird
  • build.gradle und projekt libs
  • Ich hatte RecylerView ItemDecorator für Überlappung verwendet. Aber es ist ohne Schatten überlappend. Der Bildschirm & Dekorateur ist unten

    Bildbeschreibung hier eingeben

    public class OverlapDecoration extends RecyclerView.ItemDecoration { private final static int vertOverlap = -50; @Override public void getItemOffsets (Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { outRect.set(0, 0, 0, vertOverlap); } } 

    Card_layout.xml

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:tag="cards main container"> <android.support.v7.widget.CardView android:id="@+id/card_view" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" card_view:cardBackgroundColor="@color/color_white" card_view:cardElevation="5dp" card_view:cardUseCompatPadding="true"> <TextView android:id="@+id/textViewName" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="30dp" android:layout_marginBottom="30dp" android:text="Android Name" android:textAppearance="?android:attr/textAppearanceLarge"/> </android.support.v7.widget.CardView> </LinearLayout> 

  • Nicht scrollbare ListView in ScrollView
  • Android: Binden von Daten aus einer Datenbank zu einer CheckBox in einer ListView?
  • Android Textansicht Umriss Text
  • Verschlüsselung von Bilddateien auf Android - Cipher (Output | Input) Stream Probleme
  • MultipartBuilder kann in okhttp: 3.0.0-RC1 nicht aufgelöst werden
  • Android Mehrere Alarme einstellen
  • 3 Solutions collect form web for “RecyclerView überlappend ohne Schatten”

    Bildbeschreibung hier eingeben Versuchen Sie diesen Code

    Card_layout.xml

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:tag="cards main container"> <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="0dp" android:clipToPadding="false" android:elevation="0dp" card_view:cardUseCompatPadding="false" card_view:paddingEnd="0dp" card_view:paddingStart="0dp"> <TextView android:id="@+id/textViewName" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="30dp" android:layout_marginTop="30dp" android:gravity="center" android:text="Android Name" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView2" android:layout_width="match_parent" android:layout_height="30dp" android:layout_above="@id/textViewName" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:background="@drawable/card_shadow" /> </android.support.v7.widget.CardView> </RelativeLayout> 

    Für Kartenschatten card_shadow

     <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="90" android:endColor="#77111111" android:startColor="@android:color/transparent" /> </shape> 

    Dies ist ein Beispiel für Ihre Problemlösung für statische CardView , hier Sie jedes Mal verringern Sie Ihre card_view:cardElevation von 2dp oder 5dp. Aber wenn du das mit recyclerview getan hast und dynamisches CardView willst, dann musst du Höhen in deinem RecyclerView Adapter dynamisch hinzufügen. Und seine Abnahme mit seiner Position zu erhöhen. Set card elevation holder.cardView.setCardElevation()

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:tag="cards main container"> <android.support.v7.widget.CardView android:id="@+id/card_view" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" card_view:cardElevation="20dp" card_view:cardUseCompatPadding="false"> <TextView android:id="@+id/textViewName1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="30dp" android:layout_marginBottom="30dp" android:text="Android Name" android:textAppearance="?android:attr/textAppearanceLarge"/> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:id="@+id/card_view2" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" card_view:cardElevation="18dp" card_view:cardUseCompatPadding="false"> <TextView android:id="@+id/textViewName" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="30dp" android:layout_marginBottom="30dp" android:text="Android Name" android:textAppearance="?android:attr/textAppearanceLarge"/> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:id="@+id/card_view3" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" card_view:cardUseCompatPadding="false"> <TextView android:id="@+id/textViewName3" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="30dp" android:layout_marginBottom="30dp" android:text="Android Name" android:textAppearance="?android:attr/textAppearanceLarge"/> </android.support.v7.widget.CardView> </LinearLayout> 

    Hoffe, es wird dir helfen. Vielen Dank.

    Versuche dies.

    In RecyclerView Adapter- on OnBindViewHolder-Methode fügen Sie den folgenden Code hinzu:

      CardView cardView = ((MyViewHolder) holder).cardView; float elevation = cardView.getCardElevation(); float value = elevation-Float.parseFloat((position*0.5)+""); cardView.setCardElevation(value); 

    Siehe hier die Ausgabe:

    Hinweis: abhängig von Ihrem Code ändern Sie den oben genannten Code und verwenden Sie es an der richtigen Stelle.

    Als Referenz hier ist mein Beispiel Adapter Code.

     public class CustomAdapter extends RecyclerView.Adapter { public static final String Name = "Name"; public static final String Author = "Author"; public static final String Description = "Description"; private List<Book> dataSet; private Context context; public CustomAdapter(List<Book> data, Context context) { this.dataSet = data; this.context = context; } public class MyViewHolder extends RecyclerView.ViewHolder { ImageView profile; TextView name, author,description; CardView cardView; public MyViewHolder(View itemView) { super(itemView); profile = (ImageView) itemView.findViewById(R.id.profile_image); name = (TextView) itemView.findViewById(R.id.name); author = (TextView) itemView.findViewById(R.id.author); description = (TextView) itemView.findViewById(R.id.description); cardView = (CardView) itemView.findViewById(R.id.cardview); } } @Override public int getItemCount() { return dataSet.size(); } @Override public int getItemViewType(int position) { return position; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { RecyclerView.ViewHolder vh; View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.book_layout_sample, parent, false); vh = new MyViewHolder(v); return vh; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof MyViewHolder) { Book book = dataSet.get(position); ((MyViewHolder) holder).profile.setImageDrawable(getResources().getDrawable(R.drawable.blank_user,this.context.getTheme())); ((MyViewHolder) holder).name.setText(book.title); ((MyViewHolder) holder).author.setText(book.author); ((MyViewHolder) holder).description.setText(book.description); CardView cardView = ((MyViewHolder) holder).cardView; float ele = cardView.getCardElevation(); float val = ele-Float.parseFloat((position*0.5)+""); cardView.setCardElevation(val); if(position==0) { RecyclerView.LayoutParams params = (RecyclerView.LayoutParams)cardView.getLayoutParams(); params.setMargins(0,0,0,0); cardView.setLayoutParams(params); } } } } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.