Tworzę aplikację na Androida, z której korzystam RecyclerView
. Muszę dodać dzielnik w RecyclerView
. Próbowałem dodać -
recyclerView.addItemDecoration(new
DividerItemDecoration(getActivity(),
DividerItemDecoration.VERTICAL_LIST));
poniżej jest mój kod xml -
<android.support.v7.widget.RecyclerView
android:id="@+id/drawerList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
/>
android
android-recyclerview
material-design
kanapa 8
źródło
źródło
Odpowiedzi:
W aktualizacji z października 2016 r. Biblioteka obsługi v25.0.0 ma teraz domyślną implementację podstawowych poziomych i pionowych dzielników!
https://developer.android.com/reference/android/support/v7/widget/DividerItemDecoration.html
źródło
if(parent.getChildAdapterPosition(view) == state.getItemCount() - 1)
potem wróć, w przeciwnym razie wywołaj nadklasę ”getItemOffsets()
.mLayoutManager.getOrientation()
użyłemDividerItemDecoration.VERTICAL
i zadziałało, ponieważ mój RecyclerView jest pionowy.@android:attr/listDivider
w temacie aplikacji nie wyświetla dzielnika, jeśli jest to zasób koloru, musiałem stworzyć kształt, który można rysować moim kolorem o stałej wysokości.Właściwym sposobem jest zdefiniowanie
ItemDecoration
dlaRecyclerView
następujących elementówSimpleDividerItemDecoration.java
line_divider.xml:
Na koniec ustaw to w ten sposób
Edytować
Jak wskazał @Alan Solitar
jest amortyzowane zamiast tego można użyć
źródło
Jeśli chcesz mieć dzielniki poziome i pionowe:
Zdefiniuj poziomy i pionowy rozdzielacz:
horizontal_divider.xml
vertical_divider.xml
Dodaj ten segment kodu poniżej:
źródło
DividerItemDecoration
następujący sposób:verticalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.VERTICAL);
ihorizontalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.HORIZONTAL);
.Wszystkie te odpowiedzi zbliżyły mnie do siebie, ale w każdym z nich brakowało kluczowego szczegółu. Po kilku badaniach odkryłem, że najłatwiejszą drogą jest połączenie tych 3 kroków:
Krok 1: podczas konfigurowania RecyclerView
Krok 2: w pliku takim jak res / drawable / divider_gray.xml
Krok 3: w temacie aplikacji
EDYCJA: Zaktualizowano, aby pominąć ostatni dzielnik:
Po użyciu tego trochę zdałem sobie sprawę, że rysuje dzielnik po ostatnim elemencie, co było denerwujące. Więc zmodyfikowałem Krok 1 w następujący sposób, aby zastąpić to domyślne zachowanie w DividerItemDecoration (oczywiście utworzenie oddzielnej klasy to kolejna opcja):
źródło
for (int i = 0; i < childCount; i++)
zmień nafor (int i = 0; i < childCount - 1; i++)
Po prostu dodaj widok do końca adaptera przedmiotu:
źródło
if(position == getItemCount() - 1) { mDividerView.setVisibility(View.INVISIBLE) }
Lub muszą istnieć inne sposoby, aby to zrobić.1px
wysokości jest niewidoczna dla naszych oczuOto kod prostego niestandardowego dzielnika (dzielnik pionowy / wysokość 1dp / czarny):
Załóżmy, że masz bibliotekę wsparcia:
kod Java
następnie przykładowy plik custom_divider.xml:
źródło
Utwórz osobny plik XML w folderze res / drawable
Połącz ten plik xml (twój_plik) z główną aktywnością , tak jak to:
źródło
Wersja Kotlin:
źródło
Myślę, że używasz
Fragments
tegoRecyclerView
Po prostu dodaj te linie po utworzeniu swojego
RecyclerView
iLayoutManager
obiektówOtóż to!
źródło
Wypróbuj ten prosty kod jednoliniowy
źródło
Musisz dodać następny wiersz ...
źródło
Sposób, w jaki obsługuję widok Divider, a także wstawki Divider, polega na dodaniu rozszerzenia RecyclerView.
1.
Dodaj nowy plik rozszerzenia, nazywając View lub RecyclerView:
i dodaj
setDivider
metodę rozszerzenia w pliku RecyclerViewExtension.kt.2)
Utwórz plik zasobów do rysowania w
drawable
pakiecie, taki jakrecycler_view_divider.xml
:gdzie możesz określić lewy i prawy margines na
android:insetLeft
iandroid:insetRight
.3)
W przypadku działania lub fragmentu, w którym zainicjowano RecyclerView, można ustawić niestandardową funkcję rysowania, wywołując:
4
Pozdrawiam 🍺
źródło
Może to nie być poprawny sposób, ale właśnie dodałem widok do widoku pojedynczego elementu RecyclerView (ponieważ nie sądzę, aby istniała funkcja wbudowana), tak jak:
Oznacza to, że każdy przedmiot będzie miał linię wypełniającą go na dole. Zrobiłem to z wysokości około 1dp na
#111111
tle. Daje to również rodzaj efektu „3D”.źródło
Możesz utworzyć prosty dzielnik wielokrotnego użytku.
Utwórz dzielnik:
Utwórz linię podziału: divider.xml
Dodaj dzielnik do swojego Recyclerview:
Aby usunąć dzielnik dla ostatniego elementu:
Aby zapobiec rysowaniu dzielnika dla ostatniego elementu, musisz zmienić tę linię.
Do
Ostateczne wdrożenie powinno wyglądać tak:
Mam nadzieję, że to pomoże:)
źródło
RecyclerView-FlexibleDivider firmy yqritc sprawia, że jest to jedna wkładka. Najpierw dodaj to do
build.gradle
:Teraz możesz skonfigurować i dodać dzielnik, w którym ustawiasz adapter swojego recyklerView:
źródło
HorizontalDividerItemDecoration
klasa?Android po prostu niestety komplikuje małe rzeczy. Najprostszym sposobem na osiągnięcie tego, co chcesz, bez implementacji DividerItemDecoration tutaj:
Dodaj kolor tła do RecyclerView do żądanego koloru dzielnika:
Dodaj dolny margines (android: layout_marginBottom) do katalogu głównego elementu (list_item.xml):
Powinno to dać 1dp miejsca między elementami a kolorem tła RecyclerView (który jest ciemnoszary, wydaje się dzielnikiem).
źródło
Aby nieco ułatwić odpowiedź NJ, możesz:
źródło
Po prostu dodaj margines x kwoty na dole przedmiotu w swoim
RecycleView Adapter
.onCreateViewHolder
źródło
Gdzie
0
jest poziomo i1
jest weryfikowanyźródło
Musisz tylko określić kolor w R.drawable.divider_medium
i dodaj go do swojego recyclinglerView
odśwież to
źródło
Działa rozwiązanie Bhuvanesh BS. Wersja Kotlin tego:
źródło
myślę, że to najłatwiejszy sposób
Zauważ, że: myshape może być prostokątem o wysokości, którą chcesz zrobić dzielnik
źródło