Saya mencapai solusi yang bagus dengan yang ini:
<?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>
Ini berfungsi dengan baik jika Anda membutuhkan latar belakang transparan tetapi masih warna guratan terbuka (Dalam kasus saya, saya hanya membutuhkan garis bawah). Jika Anda membutuhkan warna background Anda dapat menambahkan warna solid shape seperti pada jawaban Maragues.
EDIT 1
Terkadang, untuk perangkat Densitas Tinggi, penggunaan nilai penurunan rendah dapat berakhir dengan goresan atau jarak yang sangat tipis atau tidak terlihat. Ini mungkin terjadi pada Anda juga saat mengatur pemisah ListView.
Solusi paling sederhana adalah menggunakan jarak 1px, bukan 1dp. Ini akan membuat garis selalu terlihat pada semua kepadatan. Solusi terbaik adalah membuat sumber daya dimensi untuk setiap kepadatan, guna mendapatkan ukuran terbaik untuk setiap perangkat.
Edit 2
Menyenangkan, tetapi saya mencoba menggunakan ini 6 tahun kemudian dan saya tidak bisa mendapatkan hasil yang baik di perangkat Lollipop.
Mungkin solusi saat ini adalah menggunakan 9-patch. Android seharusnya membuat solusi mudah untuk masalah ini setelah sekian lama.
Saya tahu pertanyaan ini sudah lama diposting, jadi jawabannya tidak akan digunakan oleh orang yang memposting pertanyaan ini, tetapi mungkin masih membantu orang lain.
Menggunakan
inset
tag dan berikan nilai negatif untuk tepi samping yang ingin Anda hapus.Nilai yang mungkin adalah:
android:insetTop="-1dp" android:insetBottom="-1dp" android:insetLeft="-1dp" android:insetRight="-1dp"
sumber
Saya menyelesaikan ini dengan menggunakan lapisan daftar, menggabungkan dua bentuk, salah satunya dengan tinggi 1dp ditempatkan di bagian bawah
optionscreen_bottomrectangle.xml:
Kemudian, di file layout / main.xml
Yang mengisi celah antara table_options dan exit_bar dengan latar belakang dan sebelum exit_bar mencetak baris 1dp. Ini melakukan trik untuk saya, saya harap ini membantu orang lain.
Jawaban diedit untuk menempatkan lapisan dalam urutan yang benar. Terima kasih Alex!
sumber
Yang lain mengambil tanggapan lain dengan menggunakan padding. Penembak jitu kecil ini membuat batas di atas dan bawah.
sumber
@ Jawaban Maragues adalah mundur, karena daftar lapisan drawable menggambar dari atas ke bawah (artinya item terakhir dalam daftar digambar di atas):
Ini akan secara efektif mengisi bentuk dengan warna garis, lalu menggambar warna latar belakang di atasnya, membiarkan 1 dp terakhir jelas agar warna garis terlihat.
sumber
sumber
Saya telah menggunakan kode berikut.
sumber
Sederhana dan efisien
Untuk mendapatkan tampilan transparan dan segala sesuatu di luar memiliki hamparan beberapa warna, yang dapat Anda lakukan adalah membangun tampilan yang merangkum tampilan tengah tanpa tampilan luar menginjak tampilan tengah. .
Dengan cara ini Anda menghindari drawable eksternal ke tata letak dan Anda memiliki kontrol lebih besar atas jarak tampilan tanpa harus melakukan penghitungan saat runtime.
GL
sumber