Android RecyclerView'e bir ayırıcı çizgi nasıl eklenebilir?


221

Kullandığım bir android uygulaması geliştiriyorum RecyclerView. Bir eklemeniz gerekir bölücüyü içinde RecyclerView. Eklemeye çalıştım -

recyclerView.addItemDecoration(new
     DividerItemDecoration(getActivity(),
       DividerItemDecoration.VERTICAL_LIST));

aşağıda benim xml kodum -

   <android.support.v7.widget.RecyclerView
    android:id="@+id/drawerList"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    />

3
Bu size yardımcı olacaktır
guees

Son satır olmadan bölücü göstermek için bunu
Kishan Solanki

Kodunuzun doğru olduğunu düşünüyorum. Herhangi bir sorun görmüyorum.
Rohit Rawat

Yanıtlar:


282

Ekim 2016 güncellemesinde, v25.0.0 destek kitaplığı artık temel yatay ve dikey bölücülerin varsayılan bir uygulamasına sahip!

https://developer.android.com/reference/android/support/v7/widget/DividerItemDecoration.html

 recyclerView.addItemDecoration(new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL));

3
Merhaba bilgi için teşekkürler! Son öğeden sonra ayırıcıyı kaldırmanın bir yolu var mı? Listenin uygulandığı bir CardView var ve altta bölme + cardview gölgesi iyi değil!
Maxi

4
Ben aynı sorunu vardı ve DividerItemDecoration genişleterek ve getItemOffsets geçersiz kılma, sonra sadece ilk öğe üzerinde değilim süper çağırarak çözüldü. if(parent.getChildAdapterPosition(view) == state.getItemCount() - 1)sonra geri dön, yoksa süper sınıfı çağır ' getItemOffsets().
Robin

13
Bunun yerine, mLayoutManager.getOrientation()kullandım DividerItemDecoration.VERTICALve işe yaradı, çünkü RecyclerView'ım dikey.
Aaron Lelevier

2
bu şekilde kullanarak bölücünün rengini değiştirmenin bir yolu var mı?
j2emanue

1
@ @android:attr/listDividerUygulama temasındaki V.Kalyuzhnyu bir renk kaynağıysa bir bölücü görüntülemez, sabit bir yükseklikte rengimle çizilebilir bir şekil oluşturmak zorunda kaldım.
A. Ferrand

226

Sağ yolu tanımlamaktır ItemDecorationiçin RecyclerViewaşağıdaki gibidir

SimpleDividerItemDecoration.java

public class SimpleDividerItemDecoration extends RecyclerView.ItemDecoration {
    private Drawable mDivider;

    public SimpleDividerItemDecoration(Context context) {
        mDivider = context.getResources().getDrawable(R.drawable.line_divider);
    }

    @Override
    public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
        int left = parent.getPaddingLeft();
        int right = parent.getWidth() - parent.getPaddingRight();

        int childCount = parent.getChildCount();
        for (int i = 0; i < childCount; i++) {
            View child = parent.getChildAt(i);

            RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();

            int top = child.getBottom() + params.bottomMargin;
            int bottom = top + mDivider.getIntrinsicHeight();

            mDivider.setBounds(left, top, right, bottom);
            mDivider.draw(c);
        }
    }
}

line_divider.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <size
        android:width="1dp"
        android:height="1dp" />

    <solid android:color="@color/dark_gray" />

</shape>

Sonunda böyle ayarla

recyclerView.addItemDecoration(new SimpleDividerItemDecoration(this));

Düzenle

@Alan Solitar'ın işaret ettiği gibi

context.getResources().getDrawable(R.drawable.line_divider); 

bunun yerine amortismana tabi tutulur

ContextCompat.getDrawable(context,R.drawable.line_divider);

3
context.getResources (). getDrawable (R.drawable.line_divider) artık kullanımdan kaldırıldı.
Alan S.

2
Sorun değil. Bu iyi bir cevap ve benim için mükemmel çalıştı. Teşekkür ederim.
Alan S.

3
Bu benim tarafımda mükemmel bir şekilde çalışıyor. Ancak, merak ediyorum neden her hücre için düzene bu ayırıcı için basit bir <View> eklemiyoruz? Çok daha az kod. Bu çözüm daha az iyi bir performans mı? tx
Greg

4
Öğeleri kaydırmaya veya hareket ettirmeye çalışırsanız bu uygulama ile ilgili sorun ortaya çıkar.
TerNovi

1
@NJ Teşekkürler dostum zamanımı kurtardın.
Suhas Bachewar

40

Hem yatay hem de dikey ayırıcılara sahip olmak istiyorsanız:

  1. Yatay ve dikey ayırıcı çizilebilirleri tanımlayın:

    horizontal_divider.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
      <size android:height="1dip" />
      <solid android:color="#22000000" />
    </shape>

    vertical_divider.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
        <size android:width="1dip" />
        <solid android:color="#22000000" />
    </shape>
  2. Bu kod segmentini aşağıya ekleyin:

    DividerItemDecoration verticalDecoration = new DividerItemDecoration(recyclerview.getContext(),
            DividerItemDecoration.HORIZONTAL);
    Drawable verticalDivider = ContextCompat.getDrawable(getActivity(), R.drawable.vertical_divider);
    verticalDecoration.setDrawable(verticalDivider);
    recyclerview.addItemDecoration(verticalDecoration);
    
    DividerItemDecoration horizontalDecoration = new DividerItemDecoration(recyclerview.getContext(),
            DividerItemDecoration.VERTICAL);
    Drawable horizontalDivider = ContextCompat.getDrawable(getActivity(), R.drawable.horizontal_divider);
    horizontalDecoration.setDrawable(horizontalDivider);
    recyclerview.addItemDecoration(horizontalDecoration);

İşe yaradı. Ancak , width'i bölmek için horizontal_divider.xml dosyasını ve yüksekliği bölmek için vertical_divider.xml dosyasını değiştirirseniz , her birini şu şekilde oluşturabilirsiniz DividerItemDecoration: verticalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.VERTICAL);ve horizontalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.HORIZONTAL);.
Ruben O. Chiavone

33

Bütün bu cevaplar bana yaklaştı ama her birinin önemli bir detayı yoktu. Biraz araştırmadan sonra, bu 3 adımın bir kombinasyonu olmak için en kolay yolu buldum:

  1. Destek kitaplığının DividerItemDecoration aracını kullanın
  2. Doğru renkle bir bölücü oluşturun
  3. Temanızdaki bu bölücüyü liste olarak ayarlayın

1.Adım: RecyclerView'ü yapılandırırken

recyclerView.addItemDecoration(
        new DividerItemDecoration(context, layoutManager.getOrientation()));

2.Adım: res / drawable / divider_gray.xml gibi bir dosyada

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size android:width="1px" android:height="1px" />
    <solid android:color="@color/gray" />
</shape>

3.Adım: Uygulamanın temasında

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Other theme items above -->
    <item name="android:listDivider">@drawable/divider_gray</item>
</style>

DÜZENLEME: Son bölücü atlamak için güncellendi:
Bunu biraz kullandıktan sonra, can sıkıcı son öğeden sonra bir bölücü çizdiğini fark ettim. Bu yüzden DividerItemDecoration'daki bu varsayılan davranışı geçersiz kılmak için Adım 1'i aşağıdaki gibi değiştirdim (tabii ki ayrı bir sınıf yapmak başka bir seçenektir):

recyclerView.addItemDecoration(
        new DividerItemDecoration(context, layoutManager.getOrientation()) {
            @Override
            public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
                int position = parent.getChildAdapterPosition(view);
                // hide the divider for the last child
                if (position == parent.getAdapter().getItemCount() - 1) {
                    outRect.setEmpty();
                } else {
                    super.getItemOffsets(outRect, view, parent, state);
                }
            }
        }
);

7
GetItemOffsets'i geçersiz kılmak benim için işe yaramıyor gibi görünüyor. Ben geçersiz kılsam ve asla süper demesem bile, bölücü hala çizilir. Neyin değiştiğinden emin değilim.
lostintranslation

2
Benim için de işe yaramıyor. Son bölen hala gösteriyor.
Sotti

1
DividerItemDecoration kaynağını kopyalayarak kendi bölücü sınıfımı oluşturdum ve son bölücüyü çizmemek için biraz değiştirdim. Yöntemi çizim, tıpkı son çocuk görünümü görmezden: for (int i = 0; i < childCount; i++) değişikliğifor (int i = 0; i < childCount - 1; i++)
kientux

ItemDecoration liste öğesinden önce ("liste öğesi altında") çizildiğinden, verilen çözüm yalnızca liste öğenizde% 100 opak arka plan varsa veya çekilebilir dekorasyon% 100 şeffaf olduğunda çalışır (böylece kullanıcı recyclerView'ın arka planını görür). Aksi takdirde bölücü hayır) (getItemOffsets dönmek neyi görünür fark edilir
ernazm

31

Öğe bağdaştırıcınızın sonuna bir Görünüm eklemeniz yeterlidir:

<View
 android:layout_width="match_parent"
 android:layout_height="1dp"
 android:background="#FFFFFF"/>

25
Bu çözüm ile listenin sonunda bölücü çizgisini de alacaksınız.
Arià

5
Son satır onBindViewHolder'da böyle bir şey söyleyerek programlı olarak kaldırılabilir if(position == getItemCount() - 1) { mDividerView.setVisibility(View.INVISIBLE) }Veya bunu yapmanın başka yolları olmalıdır.
Ali Kazi

çoğu zaman, 1pxyükseklik ile son satır , gözlerimiz için görünmez
Mehdi Khademloo

@LucasDiego Bu işe yarayacak, ancak şişirmenin pahalı olduğunu biliyoruz.
Zohra Khan

21

Basit bir özel bölücü kodu (dikey bölücü / 1dp yükseklik / siyah):

Destek Kütüphanesi olduğunu varsayalım:

compile "com.android.support:recyclerview-v7:25.1.1"

java kodu

    DividerItemDecoration divider = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL);
    divider.setDrawable(ContextCompat.getDrawable(getBaseContext(), R.drawable.my_custom_divider));
    recyclerView.addItemDecoration(divider);

ardından custom_divider.xml dosya örneği:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <size android:height="1dp" />
    <solid android:color="@android:color/black" />
</shape>

10

Res / drawable klasöründe ayrı bir xml dosyası oluşturma

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <size android:height="1dp" />
    <solid android:color="@android:color/black" />
</shape>

Bu xml dosyasını (dosya_dosyası) aşağıdaki gibi ana etkinliğe bağlayın :

DividerItemDecoration divider = new DividerItemDecoration(
    recyclerView.getContext(),
    DividerItemDecoration.VERTICAL
);
divider.setDrawable(ContextCompat.getDrawable(getBaseContext(), R.drawable.your_file));
recyclerView.addItemDecoration(divider);

Dolgu nasıl eklenir? Dolgu şeklinin kullanılması işe yaramıyor.
Makalele

9

Kotlin Versiyonu:

recyclerview.addItemDecoration(DividerItemDecoration(this, LinearLayoutManager.VERTICAL))

8

Ben kullandığınız düşünmek FragmentszorundaRecyclerView

RecyclerViewVe LayoutManagerNesnelerinizi oluşturduktan sonra bu satırları eklemeniz yeterlidir

DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(),
                DividerItemDecoration.VERTICAL);
        recyclerView.addItemDecoration(dividerItemDecoration);

Bu kadar!

Hem YATAY hem de DİKEY yönelimleri destekler.


8

Bu basit tek satır kodunu deneyin

recyclerView.addItemDecoration(new DividerItemDecoration(getContext(),LinearLayoutManager.VERTICAL)); 

8

Bölücü görünümünü ve ayrıca Bölücü Eklerini işleme biçimim bir RecyclerView uzantısı eklemektir.

1.

Görünüm veya RecyclerView adını vererek yeni bir uzantı dosyası ekleyin:

RecyclerViewExtension.kt

ve setDividerRecyclerViewExtension.kt dosyasının içine uzantı yöntemini ekleyin .

/*
* RecyclerViewExtension.kt
* */
import androidx.annotation.DrawableRes
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.RecyclerView


fun RecyclerView.setDivider(@DrawableRes drawableRes: Int) {
    val divider = DividerItemDecoration(
        this.context,
        DividerItemDecoration.VERTICAL
    )
    val drawable = ContextCompat.getDrawable(
        this.context,
        drawableRes
    )
    drawable?.let {
        divider.setDrawable(it)
        addItemDecoration(divider)
    }
}

2.

drawablePaketin içinde aşağıdaki gibi bir Çekilebilir kaynak dosyası oluşturun recycler_view_divider.xml:

<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetLeft="10dp"
    android:insetRight="10dp">

    <shape>
        <size android:height="0.5dp" />
        <solid android:color="@android:color/darker_gray" />
    </shape>

</inset>

nereye sol ve sağ belirtebilirsiniz marjı üzerinde android:insetLeftve android:insetRight.

3.

RecyclerView öğesinin başlatıldığı Etkinliğinizde veya Parçanızda, aşağıdakileri arayarak özel çekilebilir öğeyi ayarlayabilirsiniz:

recyclerView.setDivider(R.drawable.recycler_view_divider)

4.

Şerefe 🍺

Bölücü ile RecyclerView satır.


7

Sonraki satırı eklemeniz gerekiyor ...

mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));

6

Yani bu doğru yol olmayabilir, ama ben sadece RecyclerView (yerleşik bir fonksiyon olduğunu sanmıyorum gibi) tek öğe görünümüne bir görünüm ekledi böyle:

<View
    android:layout_width="fill_parent"
    android:layout_height="@dimen/activity_divider_line_margin"
    android:layout_alignParentBottom="true"
    android:background="@color/tasklist_menu_dividerline_grey" />

Bu, her öğenin alt kısmında dolgu yapan bir çizgiye sahip olacağı anlamına gelir. Bir #111111arka plan ile yaklaşık 1dp yüksek yaptım . Bu aynı zamanda bir çeşit "3D" efekti verir.


2
- Bu bir yol değil
Anand Tiwari

5

Basit bir yeniden kullanılabilir bölücü oluşturabilirsiniz.

Bölücü Oluştur:

public class DividerItemDecorator extends RecyclerView.ItemDecoration {
    private Drawable mDivider;

    public DividerItemDecorator(Drawable divider) {
        mDivider = divider;
    }

    @Override
    public void onDraw(Canvas canvas, RecyclerView parent, RecyclerView.State state) {
        int dividerLeft = parent.getPaddingLeft();
        int dividerRight = parent.getWidth() - parent.getPaddingRight();

        int childCount = parent.getChildCount();
        for (int i = 0; i < childCount; i++) {
            View child = parent.getChildAt(i);

            RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();

            int dividerTop = child.getBottom() + params.bottomMargin;
            int dividerBottom = dividerTop + mDivider.getIntrinsicHeight();

            mDivider.setBounds(dividerLeft, dividerTop, dividerRight, dividerBottom);
            mDivider.draw(canvas);
        }
    }
}

Bölücü Çizgisi Oluştur: divider.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <size
        android:width="1dp"
        android:height="1dp" />
    <solid android:color="@color/grey_300" />
</shape>

Geri Dönüşüm görünümünüze ayırıcı ekleyin:

RecyclerView.ItemDecoration dividerItemDecoration = new DividerItemDecorator(ContextCompat.getDrawable(context, R.drawable.divider));
recyclerView.addItemDecoration(dividerItemDecoration);

Son öğenin ayırıcısını kaldırmak için:

Son öğe için ayırıcı çizimini önlemek için bu satırı değiştirmeniz gerekir.

for (int i = 0; i < childCount; i++) 

için

for (int i = 0; i < childCount-1; i++)

Son uygulamanız şu şekilde olmalıdır:

public class DividerItemDecorator extends RecyclerView.ItemDecoration {
    private Drawable mDivider;

    public DividerItemDecorator(Drawable divider) {
        mDivider = divider;
    }

    @Override
    public void onDraw(Canvas canvas, RecyclerView parent, RecyclerView.State state) {
        int dividerLeft = parent.getPaddingLeft();
        int dividerRight = parent.getWidth() - parent.getPaddingRight();

        int childCount = parent.getChildCount();
        for (int i = 0; i < childCount - 1; i++) {
            View child = parent.getChildAt(i);

            RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();

            int dividerTop = child.getBottom() + params.bottomMargin;
            int dividerBottom = dividerTop + mDivider.getIntrinsicHeight();

            mDivider.setBounds(dividerLeft, dividerTop, dividerRight, dividerBottom);
            mDivider.draw(canvas);
        }
    }
}

Umarım yardımcı olur:)


1
Bu mükemmel çalışıyor Neden kabul edilen cevap olmadığını bilmiyorum
Kennedy Kambo

2

yqritc'in RecyclerView-FlexibleDivider bunu tek bir astar haline getirir. İlk önce şunu ekleyin build.gradle:

compile 'com.yqritc:recyclerview-flexibledivider:1.4.0' // requires jcenter()

Artık recyclerView adaptörünüzü ayarladığınız bir bölücü yapılandırabilir ve ekleyebilirsiniz:

recyclerView.setAdapter(myAdapter);
recyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(this).color(Color.RED).sizeResId(R.dimen.divider).marginResId(R.dimen.leftmargin, R.dimen.rightmargin).build());

16
@Gaurav, HorizontalDividerItemDecorationSınıf nerededir ?
iRuth

@iRuth, Sen .gradle dosyasına maven kitaplığını eklemeniz gerekir github.com/yqritc/RecyclerView-FlexibleDivider
Hakem Zaied

5
Bu eksik bir cevap. Belki aşağı oy uygundur.
Hafta Sonu

Bunun için 3. parti lib'in gerekli olduğunu belirtmek iyi olur @ gaurav-vachhani
Andrew V.

2

Android maalesef küçük şeyleri çok karmaşık hale getiriyor. DividerItemDecoration'ı uygulamadan istediğinizi elde etmenin en kolay yolu:

RecyclerView öğesine istediğiniz bölücü rengine arka plan rengi ekleyin:

<RecyclerView
    android:id="@+id/rvList"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="@color/colorLightGray"
    android:scrollbars="vertical"
    tools:listitem="@layout/list_item"
    android:background="@android:color/darker_gray"/>

Öğenin düzen köküne (list_item.xml) alt kenar boşluğu (android: layout_marginBottom) ekleyin:

<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="match_parent"
    android:layout_marginBottom="1dp">

    <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="John Doe" />

    <TextView
        android:id="@+id/tvDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tvName"
        android:text="Some description blah blah" />

</RelativeLayout>

Bu, öğeler ve RecyclerView'in arka plan rengi arasında 1dp boşluk bırakmalıdır (koyu gri olan bölücü olarak görünecektir).


1

NJ'nin cevabını biraz daha basit hale getirmek için şunları yapabilirsiniz:

public class DividerColorItemDecoration extends DividerItemDecoration {

    public DividerColorItemDecoration(Context context, int orientation) {
        super(context, orientation);
        setDrawable(ContextCompat.getDrawable(context, R.drawable.line_divider));
    }
}

1

Yalnızca, öğenizdeki bir öğenin altına x tutarında bir kenar boşluğu ekleyin RecycleView Adapter.

onCreateViewHolder

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);

layoutParams.setMargins(0, 0, 0, 5);
itemView.setLayoutParams(layoutParams);

1
recyclerview.addItemDecoration(new DividerItemDecoration(this, 0));

0Yatay ve 1Veritical nerede


3
destek kütüphanesinin gelecekteki sürümünde değer değişebileceğinden sabit değişkeni daha iyi kullanın
Irshu

doğru .. 0 veya 1 yerine LinearLayoutManager.HORIZONTAL veya LinearLayoutManager.VERTICAL kullanmalıyız
Freny Christian

0
  class ItemOffsetDecoration(
        context: Context,
        private val paddingLeft: Int,
        private val paddingRight: Int
    ) : RecyclerView.ItemDecoration() {
        private var mDivider: Drawable? = null

        init {
            mDivider = ContextCompat.getDrawable(context, R.drawable.divider_medium)
        }

        override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
            val left = parent.paddingLeft + paddingLeft
            val right = parent.width - parent.paddingRight - paddingRight
            val childCount = parent.childCount
            for (i in 0 until childCount) {
                val child = parent.getChildAt(i)
                val params = child.layoutParams as RecyclerView.LayoutParams
                val top = child.bottom + params.bottomMargin
                val bottom = top + (mDivider?.intrinsicHeight ?: 0)

                mDivider?.let {
                    it.setBounds(left, top, right, bottom)
                    it.draw(c)
                }
            }
        }
    }

Sadece R.drawable.divider_medium içinde bir renk belirtmeniz gerekiyor

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@android:color/black" />
    <size
        android:height="1dp"
        android:width="1dp" />

</shape>

ve geri dönüştürücünüze ekleyin

recyclerView.addItemDecoration(
                        ItemOffsetDecoration(
                            this,
                            resources.getDimension(resources.getDimension(R.dimen.dp_70).roundToInt()).roundToInt(),
                            0
                        )
                    )

refernce bu


0

Bhuvanesh BS çözümü çalışır. Kotlin versiyonu:

import android.graphics.Canvas
import android.graphics.drawable.Drawable
import androidx.recyclerview.widget.RecyclerView

class DividerItemDecorator(private val mDivider: Drawable?) : RecyclerView.ItemDecoration() {

    override fun onDraw(
        canvas: Canvas,
        parent: RecyclerView,
        state: RecyclerView.State
    ) {

        val dividerLeft = parent.paddingLeft
        val dividerRight = parent.width - parent.paddingRight
        for (i in 0 until parent.childCount - 1) {
            val child = parent.getChildAt(i)
            val dividerTop =
                child.bottom + (child.layoutParams as RecyclerView.LayoutParams).bottomMargin
            val dividerBottom = dividerTop + mDivider!!.intrinsicHeight
            mDivider.setBounds(dividerLeft, dividerTop, dividerRight, dividerBottom)
            mDivider.draw(canvas)
        }
    }
}

0

bence bu en kolay yol

mDividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(),
                DividerItemDecoration.VERTICAL);
// or DividerItemDecoration.HORIZONTALL
        mDividerItemDecoration.setDrawable(getDrawable(R.drawable.myshape));
        recyclerView.addItemDecoration(mDividerItemDecoration);

Unutmayın: myshape, bölücünüzü yapmak istediğiniz yükseklikte dikdörtgen olabilir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.