Eu tenho este código:
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cashItemsList"
android:cacheColorHint="#00000000"
android:divider="@drawable/list_divider"></ListView>
onde @drawable/list_divider
está:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:width="1dp"
android:color="#8F8F8F"
android:dashWidth="1dp"
android:dashGap="1dp" />
</shape>
mas não consigo ver nenhuma divisória.
Respostas:
Pessoal, aqui está porque você deve usar 1px em vez de 1dp ou 1dip: se você especificar 1dp ou 1dip, o Android irá reduzir isso. Em um dispositivo de 120 dpi, isso se torna algo como 0,75 px traduzido, que é arredondado para 0. Em alguns dispositivos, isso se traduz em 2-3 pixels e geralmente parece feio ou desleixado
Para divisores, 1px é a altura correta se você quiser um divisor de 1 pixel e é uma das exceções para a regra "tudo deve ser mergulhado". Será 1 pixel em todas as telas. Além disso, 1px geralmente fica melhor em telas hdpi e superiores
Edição "Não é mais 2012": você pode ter que mudar para dp / dip começando em uma certa densidade de tela
fonte
Esta é uma solução alternativa, mas funciona para mim:
Criado res / drawable / divider.xml da seguinte maneira:
E em styles.xml para listview item, adicionei as seguintes linhas:
Parte crucial foi incluir esta configuração de 1px. Claro, drawable usa gradiente (com 1px) e essa não é a solução ideal. Tentei usar o derrame, mas não fiz funcionar. (Parece que você não usa estilos, então apenas adicione o atributo android: dividerHeight = "1px" para ListView.
fonte
Adicione
android:dividerHeight="1px"
e funcionará:fonte
O problema que você está tendo decorre do fato de que você está perdendo o android: dividerHeight, que você precisa, e do fato de que você está tentando especificar uma espessura de linha em seu drawable, o que não pode ser feito com divisores para alguns razão estranha. Essencialmente, para fazer seu exemplo funcionar, você poderia fazer algo como o seguinte:
Crie seu drawable como um retângulo ou uma linha; você simplesmente não pode tentar definir quaisquer dimensões nele, então:
OU:
Em seguida, crie um estilo personalizado (apenas uma preferência, mas gosto de poder reutilizar coisas)
Por fim, declare sua visualização de lista usando o estilo personalizado:
Presumo que você saiba como usar esses trechos, se não me avise. Basicamente, a resposta à sua pergunta é que você não pode definir a espessura do divisor no drawable, você deve deixar a largura indefinida e usar android: dividerHeight para defini-la.
fonte
Do doc:
Parece que
setDividerHeight()
deve ser chamado para que o divisor apareça se não tiver altura intrínsecafonte
Você
@drawable/list_divide
deve ter esta aparência:Em sua versão, você fornece um
android:width="1dp"
, simplesmente altere-o para umandroid:height="1dp"
e deve funcionar!fonte
Do doc :
basicamente, você precisará colocar um arquivo chamado
list_divider.xml
emres/drawable/
para que possa acessá-lo comoR.drawable.list_divider
; se você pode acessá-lo dessa forma, você pode usarandroid:divider="@drawable/list_divider"
no XML paraListView
.fonte
Algumas pessoas podem estar enfrentando uma linha sólida. Eu contornei isso adicionando
android:layerType="software"
à vista que faz referência ao drawable.fonte
Os documentos do Android avisam sobre coisas que estão desaparecendo devido a um erro de arredondamento ... Talvez tente dp em vez de px, e talvez também tente> 1 primeiro para ver se é o problema de arredondamento.
consulte http://developer.android.com/guide/practices/screens_support.html#testing
para a seção "Imagens com altura / largura de 1 pixel"
fonte
Eu tive o mesmo problema. No entanto, fazer a visualização de 1px não pareceu funcionar no meu Nexus 7 original. Notei que a densidade da tela era 213, que é menor do que os 240 usados em xhdpi. Então, ele estava pensando que o dispositivo tinha uma densidade mdpi.
Minha solução foi fazer com que a
dimens
pasta tivesse umdividerHeight
parâmetro. Defino-o2dp
navalues-mdpi
pasta, mas1dp
nasvalues-hdpi
pastas etc.fonte
você esqueceu um "r" no final do divisor no seu layout xml do divisor
você chama o layout @ drawable / list_divider, mas seu divisor xml é denominado "list_divide"
fonte
definir android: dividerHeight = "1dp"
fonte