Saya bisa menggambar perbatasan ke tata letak linier, tetapi semakin menarik di semua sisi. Saya ingin membatasi hanya ke sisi kanan, seperti yang Anda lakukan di CSS (border-right: 1px solid red;).
Saya sudah mencoba ini, tetapi masih menarik di semua sisi:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<stroke
android:height="2dp"
android:width="2dp"
android:color="#FF0000" />
<solid android:color="#000000" />
<padding
android:bottom="0dp"
android:left="0dp"
android:right="1dp"
android:top="0dp" />
<corners
android:bottomLeftRadius="0dp"
android:bottomRightRadius="5dp"
android:radius="1dp"
android:topLeftRadius="5dp"
android:topRightRadius="0dp" />
</shape>
</item>
Ada saran tentang cara mencapai ini?
BTW, saya tidak ingin menggunakan retasan menempatkan tampilan 1dp lebar di sisi yang diperlukan.
Jawaban:
Anda dapat menggunakan ini untuk mendapatkan perbatasan di satu sisi
Diedit
Karena banyak orang termasuk saya ingin memiliki perbatasan satu sisi dengan latar belakang transparan, saya telah menerapkan batas
BorderDrawable
yang dapat memberi saya perbatasan dengan ukuran dan warna yang berbeda dengan cara yang sama seperti kita menggunakan css. Tetapi ini tidak dapat digunakan melalui xml. Untuk mendukung XML, saya telah menambahkanBorderFrameLayout
di mana tata letak Anda dapat dibungkus.Lihat github saya untuk sumber lengkap.
sumber
Mudah seperti pie, memungkinkan bg transparan:
Ubah sudut untuk mengubah lokasi perbatasan:
sumber
Anda juga dapat mengimplementasikan apa yang Anda inginkan menggunakan satu layer
cara ini hanya batas kiri terlihat tetapi Anda dapat mencapai kombinasi yang Anda inginkan dengan bermain dengan
bottom
,left
,right
dantop
atribut dariitem
elemensumber
Untuk mendapatkan batas pada satu sisi yang dapat ditarik, terapkan sisi negatif
inset
pada 3 sisi lainnya (menyebabkan batas tersebut ditarik keluar dari layar).Pendekatan ini mirip dengan jawaban naykah, tetapi tanpa menggunakan a
layer-list
.sumber
insertX
di bagian atas untuk memutuskan batas yang akan ditampilkan dan yang tidak.Sebagai alternatif (jika Anda tidak ingin menggunakan latar belakang), Anda dapat dengan mudah melakukannya dengan membuat tampilan sebagai berikut:
Untuk memiliki batas kanan saja, letakkan ini setelah tata letak (tempat Anda ingin memiliki perbatasan):
Untuk memiliki batas kiri saja, letakkan ini sebelum tata letak (tempat Anda ingin memiliki perbatasan):
Bekerja untuk saya ... Semoga ini bisa membantu ....
sumber
Saya dapat mencapai efek dengan kode berikut
Anda dapat menyesuaikan dengan kebutuhan Anda untuk posisi perbatasan dengan mengubah arah perpindahan
sumber
sumber
Contoh bagus lainnya
sumber
Tidak disebutkan tentang file sembilan-tambalan di sini. Ya, Anda harus membuat file, namun itu pekerjaan yang cukup mudah dan itu benar-benar " versi lintas dan mendukung transparansi " solusi. Jika file ditempatkan ke
drawable-nodpi
direktori, ia bekerjapx
berdasarkan, dan dalamdrawable-mdpi
karya kira-kira sebagai basis dp (terima kasih untuk sampel ulang).Contoh file untuk pertanyaan awal ( kanan-batas: 1px merah; ) ada di sini:
http://ge.tt/517ZIFC2/v/3?c
Cukup tempatkan ke
drawable-nodpi
direktori.sumber
Batas warna yang berbeda. Saya menggunakan 3 item.
sumber