J'ai ce code:
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cashItemsList"
android:cacheColorHint="#00000000"
android:divider="@drawable/list_divider"></ListView>
où @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>
mais je ne vois aucun diviseur.
Réponses:
Folks, voici pourquoi vous devriez utiliser 1px au lieu de 1dp ou 1dip: si vous spécifiez 1dp ou 1dip, Android réduira cela. Sur un appareil de 120 dpi, cela devient quelque chose comme 0,75px traduit, ce qui arrondit à 0. Sur certains appareils, cela se traduit par 2-3 pixels, et il semble généralement moche ou bâclé
Pour les diviseurs, 1px est la hauteur correcte si vous voulez un diviseur de 1 pixel et est l'une des exceptions pour la règle «tout devrait être creux». Ce sera 1 pixel sur tous les écrans. De plus, 1px est généralement meilleur sur les écrans hdpi et supérieurs
"Ce n'est plus 2012" edit: il se peut que vous deviez passer en dp / dip à partir d'une certaine densité d'écran
la source
Ceci est une solution de contournement, mais fonctionne pour moi:
Créé res / drawable / divider.xml comme suit:
Et dans styles.xml pour l'élément de liste, j'ai ajouté les lignes suivantes:
La partie cruciale était d'inclure ce paramètre 1px. Bien sûr, drawable utilise un dégradé (avec 1px) et ce n'est pas la solution optimale. J'ai essayé d'utiliser l'AVC mais je ne l'ai pas fait fonctionner. (Vous ne semblez pas utiliser de styles, alors ajoutez simplement l'attribut android: dividerHeight = "1px" pour le ListView.
la source
Ajoutez
android:dividerHeight="1px"
et cela fonctionnera:la source
Le problème que vous rencontrez vient du fait qu'il vous manque android: dividerHeight, dont vous avez besoin, et du fait que vous essayez de spécifier une épaisseur de ligne dans votre dessin, ce que vous ne pouvez pas faire avec des diviseurs pour certains raison étrange. Essentiellement, pour que votre exemple fonctionne, vous pouvez faire quelque chose comme ce qui suit:
Créez votre dessinable sous forme de rectangle ou de ligne, soit vous ne pouvez pas essayer de définir des dimensions dessus, donc non plus:
OU:
Ensuite, créez un style personnalisé (juste une préférence mais j'aime pouvoir réutiliser des choses)
Enfin, déclarez votre vue de liste en utilisant le style personnalisé:
Je suppose que vous savez comment utiliser ces extraits, sinon faites-le moi savoir. Fondamentalement, la réponse à votre question est que vous ne pouvez pas définir l'épaisseur du diviseur dans le dessin, vous devez laisser la largeur indéfinie ici et utiliser android: dividerHeight pour le définir à la place.
la source
Du doc:
On dirait qu'il
setDividerHeight()
doit être appelé pour que le diviseur apparaisse s'il n'a pas de hauteur intrinsèquela source
Votre
@drawable/list_divide
devrait ressembler à ceci:Dans votre version, vous fournissez un
android:width="1dp"
, changez-le simplement en unandroid:height="1dp"
et cela devrait fonctionner!la source
Du doc :
En gros, vous aurez besoin de mettre un fichier nommé
list_divider.xml
dansres/drawable/
afin que vous puissiez accéder commeR.drawable.list_divider
; si vous pouvez y accéder de cette façon, vous pouvez utiliserandroid:divider="@drawable/list_divider"
dans le XML pourListView
.la source
Certaines personnes peuvent rencontrer une ligne continue. J'ai contourné cela en ajoutant
android:layerType="software"
à la vue faisant référence au dessinable.la source
La documentation Android avertit que des choses disparaissent en raison d'une erreur d'arrondi ... Essayez peut-être dp au lieu de px, et peut-être aussi essayez d'abord> 1 pour voir si c'est le problème d'arrondi.
voir http://developer.android.com/guide/practices/screens_support.html#testing
pour la section "Images avec 1 pixel hauteur / largeur"
la source
J'ai eu le même problème. Cependant, rendre la vue 1px ne semblait pas fonctionner sur mon Nexus 7. d'origine. J'ai remarqué que la densité de l'écran était de 213, ce qui est inférieur aux 240 utilisés dans xhdpi. On pensait donc que l'appareil avait une densité mdpi.
Ma solution était de faire en sorte que le
dimens
dossier ait undividerHeight
paramètre. Je l'ai mis2dp
dans levalues-mdpi
dossier mais1dp
dans lesvalues-hdpi
dossiers etc.la source
vous avez oublié un "r" à la fin du diviseur dans votre mise en page XML diviseur
vous appelez le layout @ drawable / list_divider mais votre diviseur xml est nommé "list_divide"
la source
définir android: dividerHeight = "1dp"
la source