9
votes

ListView Divider ne figure pas dans Android 5

J'ai une simple liste de liste pour laquelle j'ai défini une coutume adaptée au diviseur. J'ai défini la hauteur du diviseur pour être 1DP. La liste de liste est dans un fragment.

<shape
    android:shape="line" >
    <stroke
        android:color="@color/custom_color" />

    <gradient android:height="1dp" />

</shape>


8 commentaires

J'essaierais de "2 dp", mais sinon je n'ai aucune idée de ce qui pourrait manquer.


J'ai essayé 4DP aussi. N'a pas aidé.


listview.setdivider (R.Drawable.line);


Essayez d'utiliser px au lieu de DP, car pour LDPI, 1 dp = 0,75 pixels de sorte qu'il arrondit jusqu'à 0 et que le diviseur ne soit pas tiré.


Bon point. Mais je cours sur un Nexus 5 (qui utilise des actifs XXHDPI)


Utilisez RECYCLERVIEW au lieu de ListView http://stackoverflow.com / QUESTIONS / 24618829 / HOW-ADD-ADD-ADD-ADD-DIVID-ERS-AND-ESPACES-BE ENTRENDRE VUE EN RECYCLER


Vous devez définir une largeur de course.


Essayez de forcer le type de couche logicielle avec la méthode SetLayerType (). Les lignes de course ne fonctionnent pas correctement avec une accélération matérielle activée sur certains périphériques


4 Réponses :


7
votes

réponse mise à jour forte>

Après avoir des tests supplémentaires, il apparaît que les séparateurs ne montreront que si la hauteur du diviseur est strictement moins forte> que le diviseur code> défini pour la liste de liste. Par exemple: p>

personnalisé_divider.xml em> (Notez que la hauteur du séparateur est spécifiée par android: largeur code>) em> p> xxx pré>

layout xml em > p>

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/listView"
    android:divider="@drawable/custom_divider"
    android:dividerHeight="20dp"/>


1 commentaires

Merci pour votre solution !!



9
votes

Vous devez utiliser android: forme = "rectangle" code> au lieu de android: forme = "ligne" code> pour le faire fonctionner sur chaque version Android ... (changez également AVC CODE> TO SOLID CODE>)

<shape
    android:shape="rectangle" >
    <solid android:color="@color/custom_color" />
    <gradient android:height="1dp" />
</shape>


0 commentaires

8
votes

Par mauvais hasard, votre élément de liste est-il désactivé via ISenabled () pour renvoyer false? Il y a un changement (bug?) Dans Android L qui provoque des diviseurs d'élément de liste pour être masqué si un élément est désactivé. J'ai rencontré ce même problème, mes séparateurs de liste travaillant dans tout, mais L, et cela s'est avéré être la cause.

Voici quelques articles supplémentaires où cela a été discuté, ainsi qu'un problème ouvert avec Google:

Commentaires ici: Disparant diviseur à ListView quand arrayadapter.EnEnabled retourne faux

Comment ajouter des diviseurs entre les éléments désactivés dans ListView ? - Lollipop

https://code.google.com/p/android / Problèmes / Détails? ID = 83055

Si tel est le cas, il semble que vous puissiez avoir besoin de dessiner manuellement le diviseur avec une vue personnalisée et de définir le diviseur sur NULL sur la liste. Je vais essayer la même chose.


0 commentaires

1
votes

L'attribut hauteur n'est pas une propriété sous la balise de dégradé. Utilisez la taille d'origine comme ci-dessous.

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="@android:color/holo_blue_dark" />

    <size android:height="1px" />

</shape>


0 commentaires