Я досяг хорошого рішення за допомогою цього:
<?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>
Це добре працює, якщо вам потрібен прозорий фон, але все ще відкритий колір обведення (у моєму випадку мені знадобився лише нижній рядок). Якщо вам потрібен колір фону, ви можете додати однотонний колір форми, як у відповіді Мараґеса.
РЕДАГУВАТИ 1
Іноді для пристроїв високої щільності використання низьких значень занурення може закінчитися дуже тонкими або невидимими штрихами або відстанями. Це може трапитися з вами також при встановленні роздільників ListView.
Найпростішим обхідним шляхом є використання відстані 1px замість 1dp. Це зробить лінію завжди видимою при будь-якій щільності. Найкращим рішенням було б створити розмірні ресурси для кожної щільності, щоб отримати найкращий розмір для кожного пристрою.
Редагувати 2
Цікаво, але я спробував використати це через 6 років, і я не можу отримати хорошого результату на пристроях Lollipop.
Можливо, поточне рішення полягає у використанні 9-патчів. Після цього часу Android повинен був легко вирішити цю проблему.