Estou desenvolvendo um aplicativo Android onde estou usando RecyclerView
. Eu preciso adicionar um divisor no RecyclerView
. Eu tentei adicionar -
recyclerView.addItemDecoration(new
DividerItemDecoration(getActivity(),
DividerItemDecoration.VERTICAL_LIST));
abaixo está o meu código 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
sofquestion 8
fonte
fonte
Respostas:
Na atualização de outubro de 2016, a biblioteca de suporte v25.0.0 agora possui uma implementação padrão de divisores horizontais e verticais básicos disponíveis!
https://developer.android.com/reference/android/support/v7/widget/DividerItemDecoration.html
fonte
if(parent.getChildAdapterPosition(view) == state.getItemCount() - 1)
depois retorne, caso contrário, chame a superclasse 'getItemOffsets()
.mLayoutManager.getOrientation()
, useiDividerItemDecoration.VERTICAL
e funcionou, pois meu RecyclerView é vertical.@android:attr/listDivider
no tema do aplicativo não exibe um divisor, se for um recurso de cores, tive que criar uma forma que pode ser desenhada com a minha cor com uma altura fixa.O caminho certo é definir
ItemDecoration
oRecyclerView
seguinte:SimpleDividerItemDecoration.java
line_divider.xml:
Finalmente, defina-o assim
Editar
Como apontado por @Alan Solitar
é depreciado em vez de que você pode usar
fonte
Se você deseja ter divisores horizontais e verticais:
Defina drawables divisores horizontais e verticais:
horizontal_divider.xml
vertical_divider.xml
Adicione este segmento de código abaixo:
fonte
DividerItemDecoration
assim:verticalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.VERTICAL);
ehorizontalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.HORIZONTAL);
.Todas essas respostas me aproximaram, mas cada uma delas estava com falta de um detalhe importante. Depois de um pouco de pesquisa, achei a rota mais fácil para ser uma combinação dessas três etapas:
Etapa 1: ao configurar o RecyclerView
Etapa 2: em um arquivo como res / drawable / divider_gray.xml
Etapa 3: no tema do aplicativo
EDIT: Atualizado para pular o último divisor:
Depois de usar isso um pouco, percebi que ele estava desenhando um divisor após o último item, o que era irritante. Então, modifiquei a Etapa 1 da seguinte maneira para substituir esse comportamento padrão no DividerItemDecoration (é claro, criar uma classe separada é outra opção):
fonte
for (int i = 0; i < childCount; i++)
mude parafor (int i = 0; i < childCount - 1; i++)
Basta adicionar uma View no final do seu adaptador de itens:
fonte
if(position == getItemCount() - 1) { mDividerView.setVisibility(View.INVISIBLE) }
Ou deve haver outras maneiras de fazer isso.1px
de altura, é invisível aos nossos olhosAqui está o código para um divisor personalizado simples (divisor vertical / 1dp de altura / preto):
Supõe que você tenha a Biblioteca de Suporte:
código java
a amostra do arquivo custom_divider.xml:
fonte
Crie um arquivo xml separado na pasta res / drawable
Conecte esse arquivo xml (your_file) na atividade principal , assim:
fonte
Versão Kotlin:
fonte
Eu acho que você está usando
Fragments
para terRecyclerView
Basta adicionar estas linhas depois de criar os seus
RecyclerView
eLayoutManager
ObjetosÉ isso aí!
fonte
Experimente este código simples de linha única
fonte
Você precisa adicionar a próxima linha ...
fonte
A maneira como estou lidando com a exibição do divisor e também com os insertos do divisor é adicionando uma extensão RecyclerView.
1
Adicione um novo arquivo de extensão nomeando View ou RecyclerView:
e adicione o
setDivider
método de extensão dentro do arquivo RecyclerViewExtension.kt.2)
Crie um arquivo de recurso Drawable dentro do
drawable
pacote, comorecycler_view_divider.xml
:onde você pode especificar as margens esquerda e direita em
android:insetLeft
eandroid:insetRight
.3)
Na sua Atividade ou Fragmento onde o RecyclerView é inicializado, você pode definir o drawable personalizado chamando:
4)
Saúde 🍺
fonte
Portanto, essa pode não ser a maneira correta, mas acabei de adicionar uma exibição à exibição de item único do RecyclerView (como não acho que exista uma função interna) assim:
Isso significa que cada item terá uma linha que o preenche na parte inferior. Eu consegui 1dp de altura com um
#111111
fundo. Isso também fornece um tipo de efeito "3D".fonte
Você pode criar um divisor reutilizável simples.
Criar divisor:
Criar linha divisória: divider.xml
Adicione o divisor à sua Recyclerview:
Para remover o divisor para o último item:
Para impedir o desenho do divisor para o último item, é necessário alterar esta linha.
Para
Sua implementação final deve ser assim:
Espero que ajude:)
fonte
O RecyclerView-FlexibleDivider do yqritc faz deste um liner. Primeiro adicione isso ao seu
build.gradle
:Agora você pode configurar e adicionar uma divisória onde define o adaptador do seu recyclerView:
fonte
HorizontalDividerItemDecoration
localizada a turma?Infelizmente, o Android simplifica muito as coisas. A maneira mais fácil de alcançar o que você deseja, sem implementar o DividerItemDecoration aqui:
Adicione cor de plano de fundo ao RecyclerView à sua cor divisória desejada:
Adicione a margem inferior (android: layout_marginBottom) à raiz do layout do item (list_item.xml):
Isso deve dar 1dp de espaço entre os itens e a cor de fundo do RecyclerView (que é cinza escuro aparecerá como divisor).
fonte
Para tornar a resposta de NJ um pouco mais simples, você pode fazer:
fonte
Basta adicionar uma margem de x quantidade na parte inferior de um item no seu
RecycleView Adapter
.onCreateViewHolder
fonte
Onde
0
é Horizontal e1
é Veríticofonte
Você só precisa especificar uma cor em R.drawable.divider_medium
e adicione-o ao seu reciclador
refernce isto
fonte
A solução Bhuvanesh BS funciona. Versão Kotlin disso:
fonte
eu acho que é a maneira mais fácil
Observe que: myshape pode ser retangular com a altura que você deseja criar seu divisor
fonte