Ich habe diesen 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>
wo @drawable/list_divider
ist:
<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>
aber ich kann keinen Teiler sehen.
Antworten:
Leute, hier ist der Grund, warum Sie 1px anstelle von 1dp oder 1dip verwenden sollten: Wenn Sie 1dp oder 1dip angeben, wird dies von Android verkleinert. Auf einem 120-dpi-Gerät wird dies zu einer Übersetzung von 0,75 Pixel, die auf 0 gerundet wird. Auf einigen Geräten bedeutet dies 2-3 Pixel, und es sieht normalerweise hässlich oder schlampig aus
Für Teiler ist 1px die richtige Höhe, wenn Sie einen 1-Pixel-Teiler möchten, und ist eine der Ausnahmen für die Regel "Alles sollte eintauchen". Auf allen Bildschirmen wird 1 Pixel angezeigt. Außerdem sieht 1px auf HDPI-Bildschirmen und höher normalerweise besser aus
Bearbeiten "Es ist nicht mehr 2012": Möglicherweise müssen Sie ab einer bestimmten Bildschirmdichte auf dp / dip umschalten
quelle
Dies ist eine Problemumgehung, funktioniert aber für mich:
Res / drawable / divider.xml wurde wie folgt erstellt:
Und in styles.xml für Listenansicht habe ich die folgenden Zeilen hinzugefügt:
Entscheidend war, diese 1px-Einstellung aufzunehmen. Natürlich verwendet Drawable einen Farbverlauf (mit 1 Pixel) und das ist nicht die optimale Lösung. Ich habe versucht, Schlaganfall zu verwenden, aber es hat nicht funktioniert. (Sie scheinen keine Stile zu verwenden, also fügen Sie einfach das Attribut android: dividerHeight = "1px" für die ListView hinzu.
quelle
Hinzufügen
android:dividerHeight="1px"
und es wird funktionieren:quelle
Das Problem, das Sie haben, rührt von der Tatsache her, dass Sie android: dividerHeight vermissen, das Sie benötigen, und der Tatsache, dass Sie versuchen, eine Strichstärke in Ihrem Drawable anzugeben, was Sie mit Teilern für einige nicht tun können seltsamer Grund. Um Ihr Beispiel zum Laufen zu bringen, können Sie im Wesentlichen Folgendes tun:
Erstellen Sie Ihr Zeichenobjekt entweder als Rechteck oder als Linie. In beiden Fällen können Sie einfach nicht versuchen, Bemaßungen festzulegen.
ODER:
Erstellen Sie dann einen benutzerdefinierten Stil (nur eine Präferenz, aber ich möchte in der Lage sein, Sachen wiederzuverwenden)
Deklarieren Sie abschließend Ihre Listenansicht mit dem benutzerdefinierten Stil:
Ich gehe davon aus, dass Sie wissen, wie man diese Schnipsel verwendet, wenn nicht, lassen Sie es mich wissen. Grundsätzlich lautet die Antwort auf Ihre Frage, dass Sie die Teilerdicke im Zeichenelement nicht festlegen können. Sie müssen die Breite dort undefiniert lassen und stattdessen android: dividerHeight verwenden, um sie festzulegen.
quelle
Aus dem Dokument:
Sieht so aus
setDividerHeight()
, als müsste aufgerufen werden, damit der Teiler angezeigt wird, wenn er keine Eigenhöhe hatquelle
Du
@drawable/list_divide
solltest so aussehen:In Ihrer Version geben Sie ein an
android:width="1dp"
, ändern Sieandroid:height="1dp"
es einfach in ein und es sollte funktionieren!quelle
Aus dem Dokument :
Grundsätzlich müssen Sie eine Datei mit dem Namen
list_divider.xml
einfügen,res/drawable/
damit Sie darauf zugreifen könnenR.drawable.list_divider
. Wenn Sie auf diese Weise darauf zugreifen können, können Sieandroid:divider="@drawable/list_divider"
in der XML für verwendenListView
.quelle
Einige Leute haben möglicherweise eine durchgezogene Linie. Ich habe dies
android:layerType="software"
umgangen, indem ich der Ansicht, die auf das Zeichenobjekt verweist, etwas hinzugefügt habe.quelle
Die Android-Dokumente warnen vor dem Verschwinden von Dingen aufgrund eines Rundungsfehlers ... Versuchen Sie es vielleicht mit dp anstelle von px, und versuchen Sie vielleicht auch zuerst> 1, um festzustellen, ob es sich um das Rundungsproblem handelt.
Siehe http://developer.android.com/guide/practices/screens_support.html#testing
für den Abschnitt "Bilder mit 1 Pixel Höhe / Breite"
quelle
Ich hatte das gleiche Problem. Das Erstellen der Ansicht 1px schien jedoch auf meinem ursprünglichen Nexus 7 nicht zu funktionieren. Ich bemerkte, dass die Bildschirmdichte 213 betrug, was weniger als die in xhdpi verwendeten 240 ist. Es wurde also angenommen, dass das Gerät eine MDPI-Dichte hat.
Meine Lösung bestand darin, es so zu gestalten, dass der
dimens
Ordner einendividerHeight
Parameter hatte. Ich habe es2dp
imvalues-mdpi
Ordner aber1dp
in denvalues-hdpi
Ordnern etc eingestellt.quelle
Sie haben ein "r" am Ende des Teilers in Ihrem XML-Layout des Teilers vergessen
Sie nennen das Layout @ drawable / list_divider, aber Ihre Divider-XML heißt "list_divide".
quelle
setze android: dividerHeight = "1dp"
quelle