ListView-Teiler nicht angezeigt in Android 5
Habe ich eine einfache listview, für die ich definiert haben, eine benutzerdefinierte drawable für die Teiler. Ich habe den Teiler Höhe 1dp. Die listview ist in einem fragment.
<shape
android:shape="line" >
<stroke
android:color="@color/custom_color" />
<gradient android:height="1dp" />
</shape>
Es funktioniert für alle Android-Versionen außer L.
Alles, was ich bin fehlt?
- Ich würde versuchen zu "2dp", aber sonst habe ich keine Idee, was fehlen könnte.
- Ich habe versucht 4dp zu. Hat auch nicht geholfen.
- listview.setdivider(R. drawable.Zeile);
- versuchen px anstelle von dp, da für ldpi, 1dp = 0.75 Pixel, so es rundet ab auf 0 und die Trennlinie nicht gezogen.
- Guter Punkt. Aber ich bin mit dieser auf einem Nexus 5 (mit xxhdpi Vermögenswerte)
- Verwenden recyclerView statt listView http://stackoverflow.com/questions/24618829/how-to-add-dividers-and-spaces-between-items-in-recyclerview
- Sie müssen eine Breite der Striche.
- versuchen Sie zu zwingen, software layer-Typ mit setLayerType () - Methode. Schlaganfall Linien funktioniert nicht richtig mit hardware-Beschleunigung aktiviert auf einigen Geräten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie verwenden
android:shape="rectangle"
stattandroid:shape="line"
machen, damit es funktioniert auf jedem android-version... (auch ändernstroke
zusolid
)Spaß haben!
Durch Zufall, ist dein Punkt der Liste deaktiviert via übergeordnetem isEnabled() den Wert false zurück? Es gibt eine änderung (bug?) in Android L, die Ursachen Listenelement Trennwänden versteckt werden, wenn ein Element deaktiviert ist. Ich lief in das gleiche Problem, meine Liste Teilern arbeiten, in der alles, aber L, und es stellte sich heraus, die Ursache sein.
Hier sind einige weitere Beiträge in denen das diskutiert wurde, sowie ein Thema eröffnet mit Google:
Kommentare hier: Verschwinden Teiler in der ListView, wenn ArrayAdapter.isEnabled-Eigenschaft der Wert "false" zurückgibt
Wie hinzufügen von Trennwänden zwischen deaktivierte Elemente in ListView? - Lollipop
https://code.google.com/p/android/issues/detail?id=83055
Wenn dies der Fall ist, es klingt wie Sie möglicherweise benötigen, um manuell ziehen Sie die Trennlinie mit einer benutzerdefinierten Ansicht und setzen Sie den Teiler null auf der Liste. Ich werde versuchen das gleiche.
Aktualisierte Antwort
Nach weiteren Tests scheint es, dass die Trennwände nur angezeigt werden, wenn die Höhe der Teiler ist weniger streng als die
dividerHeight
set für das ListView. Zum Beispiel:custom_divider.xml
(Beachten Sie, dass die Teiler Höhe ist festgelegt durch
android:width
)Layout-xml -
...Arbeiten. Aber das wird es nicht:
custom_divider.xml
(Beachten Sie, dass die Teiler Höhe ist festgelegt durch
android:width
)Layout-xml -
Meine Vermutung ist, dass Google Durcheinander mit der Optimierung zum zeichnen von Listview-Teiler und wird einfach nicht zeichnen, wenn nicht genügend Platz vorhanden ist.
Original-Beitrag
Sieht aus wie Sie benötigen, um sowohl die
dividerHeight
auf das ListView und die Konturwidth
der Teiler drawable dies funktioniert auf Android 5.Beispiel:
custom_divider.xml
Layout-xml -
Height-Attribut ist nicht eine Eigenschaft unter gradient-tag. Verwenden Sie die Größe-Einstellung wie unten.