Wie Teiler und Zwischenräume zwischen Artikel im RecyclerView hinzufügen ?

? EyesClear @ | Original: StackOverFlow
---

Dies ist ein Beispiel dafür, wie es hätte in der ListView Klasse zuvor getan haben, mit den Teiler und dividerHeight Parameter :

<ListView
    android:id="@+id/activity_home_list_view"
    android:layout_width="match_parent" 
    android:layout_height="match_parent"
    android:divider="@android:color/transparent"
    android:dividerHeight="8dp"/>

Allerdings sehe ich nicht, eine solche Möglichkeit in der RecyclerView Klasse.

<android.support.v7.widget.RecyclerView
    android:id="@+id/activity_home_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="vertical"/>

In diesem Fall ist es in Ordnung, die Margen zu definieren und / oder fügen Sie eine benutzerdefinierte Teiler Blick direkt in das Layout eines Listenelements oder gibt es einen besseren Weg, um mein Ziel zu erreichen ?

---

Top 5 Antwort

1Duy Nguyen @

Darf ich Ihre Aufmerksamkeit auf diese besondere Datei auf Github von Alex Fu :  https://gist.github.com/alexfu/0f464fc3742f134ccd1e

Es ist die DividerItemDecoration.java Beispieldatei " zog direkt aus dem Support -Demos " . ( Https://plus.google.com/103498612790395592106/posts/VVEB3m7NkSS )

Ich war in der Lage, Trennlinien, nachdem Sie diese Datei importieren in meinem Projekt gut zu bekommen und diese in einem Elementdekorationzum Verwerter Ansicht hinzuzufügen.

Hier ist, wie meine onCreateView sehen aus wie in meinem Fragment, das die Recyclerview :

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_recycler_view, container, false);

    mRecyclerView = (RecyclerView) rootView.findViewById(R.id.my_recycler_view);
    mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));

    mRecyclerView.setHasFixedSize(true);
    mLayoutManager = new LinearLayoutManager(getActivity());
    mRecyclerView.setLayoutManager(mLayoutManager);
    mRecyclerView.setItemAnimator(new DefaultItemAnimator());

    return rootView;
}

Ich bin sicher, weitere Styling kann getan werden, aber es ist ein Ausgangspunkt. :)

2EyesClear @

Ich stieß auf https://github.com/lucasr/twoway-view die angeblich die Artikel Dekoration Prozess zu vereinfachen wird .

Zu den https://github.com/lucasr/twoway-view#features ist :

A collection of stock item decorations including: Item spacing Horizontal/vertical dividers. List item 3Krzysztof Dubrowski @

Wenn es nur Abstand das einzige, was Sie tun müssen, ist ein paar Margen, Ihr Einzel Layout hinzufügen

4Kevin Grant @

Dies gilt nicht wirklich das Problem zu lösen, sondern als vorübergehende Lösung können Sie die Set https://developer.android.com/reference/android/support/v7/widget/CardView.html#attr_android.support.v7.cardview:cardUseCompatPadding Immobilie auf der Karte in Ihrem XML- Layout, damit es die gleiche Messung wie es auf vorge Lollipop -Versionen funktioniert .

card_view:cardUseCompatPadding="true"
5SergeyA @

Einfache ItemDecoration Umsetzung für gleiche Abstände zwischen allen Einzelteilen.

public class SpacesItemDecoration extends RecyclerView.ItemDecoration {
    private int space;

    public SpacesItemDecoration(int space) {
        this.space = space;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        outRect.left = space;
        outRect.right = space;
        outRect.bottom = space;

        // Add top margin only for the first item to avoid double space between items
        if(parent.getChildPosition(view) == 0)
            outRect.top = space;
    }
}