Mit dieser habe ich eine gute Lösung erreicht:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is the line -->
<item android:top="-1dp" android:right="-1dp" android:left="-1dp">
<shape>
<solid android:color="@android:color/transparent" />
<stroke android:width="1dp" android:color="#ffffff" />
</shape>
</item>
</layer-list>
Dies funktioniert gut, wenn Sie einen transparenten Hintergrund, aber dennoch eine offene Strichfarbe benötigen (in meinem Fall brauchte ich nur eine untere Zeile). Wenn Sie eine Hintergrundfarbe benötigen, können Sie eine Volltonfarbe hinzufügen, wie in Maragues Antwort.
BEARBEITEN 1
Bei Geräten mit hoher Dichte kann die Verwendung niedriger Eintauchwerte manchmal zu sehr dünnen oder unsichtbaren Strichen oder Abständen führen. Dies kann Ihnen auch beim Festlegen von ListView-Teilern passieren.
Die einfachste Problemumgehung besteht darin, einen Abstand von 1px anstelle von 1dp zu verwenden. Dadurch wird die Linie bei allen Dichten immer sichtbar. Die beste Lösung wäre, Dimensionsressourcen für jede Dichte zu erstellen, um die beste Größe für jedes Gerät zu erhalten.
Bearbeiten 2
Spaß, aber ich habe 6 Jahre später versucht, dies zu verwenden, und ich kann auf Lollipop-Geräten kein gutes Ergebnis erzielen.
Wahrscheinlich besteht die aktuelle Lösung darin, 9-Patch zu verwenden. Android hätte nach all dieser Zeit eine einfache Lösung für dieses Problem finden sollen.
Ich weiß, dass diese Frage vor langer Zeit gestellt wurde, daher wird die Antwort nicht von der Person verwendet, die diese Frage gestellt hat, aber sie kann dennoch anderen helfen.
Verwenden Sie das
inset
Tag und geben Sie einen negativen Wert für den Seitenrand an, den Sie entfernen möchten.Die möglichen Werte sind:
android:insetTop="-1dp" android:insetBottom="-1dp" android:insetLeft="-1dp" android:insetRight="-1dp"
quelle
Ich habe dies gelöst, indem ich eine Listenebene verwendet habe, die zwei Formen kombiniert, von denen eine mit einer Höhe von 1 dp unten platziert ist
optionscreen_bottomrectangle.xml:
Dann in der Datei layout / main.xml
Dies füllt die Lücke zwischen table_options und exit_bar mit einem Hintergrund und druckt kurz vor exit_bar eine 1dp-Zeile. Das hat den Trick für mich getan, ich hoffe es hilft jemand anderem.
Antwort bearbeitet, um Ebenen in der richtigen Reihenfolge zu platzieren. Danke Alex!
quelle
Ein anderer nimmt die anderen Antworten stattdessen mit Polsterung auf. Dieses kleine Snipplet bildet oben und unten einen Rand.
quelle
Die Antwort von @ Maragues ist rückwärts, da die Drawables der Ebenenliste von oben nach unten gezeichnet werden (dh das letzte Element in der Liste wird oben gezeichnet):
Dadurch wird die Form effektiv mit der Linienfarbe gefüllt und anschließend die Hintergrundfarbe darüber gezeichnet, sodass die letzten 1 dp frei bleiben, damit die Linienfarbe durchscheint.
quelle
quelle
Ich habe folgenden Code verwendet.
quelle