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.