Apakah ada cara mudah untuk menambahkan perbatasan ke bagian atas dan bawah dari Tampilan Android?

407

Saya memiliki TextView dan saya ingin menambahkan garis hitam di sepanjang batas atas dan bawahnya. Saya mencoba menambahkan android:drawableTopdan android:drawableBottomke TextView, tetapi itu hanya menyebabkan seluruh tampilan menjadi hitam.

<TextView
    android:background="@android:color/green"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:drawableTop="@android:color/black"
    android:drawableBottom="@android:color/black"
    android:text="la la la" />

Apakah ada cara untuk dengan mudah menambahkan batas atas dan bawah ke Tampilan (khususnya, TextView) di Android?

emmby
sumber
2
Mengejutkan tidak ada yang menyebutkan dividerVertical ! Ini adalah hal yang dibuat oleh Android, untuk mencapai, yah, pembagi vertikal. COold tidak mudah dan Anda melakukan segalanya di panel "Desain" WYSIWYG di Android Studio.
Fattie
note dividerVertical diimplementasikan dalam API 11.
JPM
1
Mungkin Anda bisa menunjukkan cara menggunakan dividerVertical?
androidguy

Jawaban:

430

Di android 2.2 Anda bisa melakukan hal berikut.

Buat xml drawable seperti /res/drawable/textlines.xml dan tetapkan ini sebagai properti latar belakang TextView.

<TextView
android:text="My text with lines above and below"
android:background="@drawable/textlines"
/>

/res/drawable/textlines.xml

<?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:width="1dp" android:color="#FF000000" />
            <solid android:color="#FFDDDDDD" />

        </shape>
   </item>

   <item android:top="1dp" android:bottom="1dp"> 
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#FFDDDDDD" />
            <solid android:color="#00000000" />
        </shape>
   </item>

</layer-list>

Sisi buruknya adalah Anda harus menentukan warna latar belakang buram, karena transparansi tidak akan berfungsi. (Setidaknya saya pikir mereka melakukannya tetapi saya salah). Dalam contoh di atas Anda dapat melihat bahwa warna solid dari bentuk pertama #FFdddddd disalin dalam warna bentuk 2 stroke.

Emile
sumber
11
Lihat juga solusi ini, yang juga berfungsi untuk TextViews, jika Anda ingin perbatasan di sekitar: stackoverflow.com/questions/3263611/...
emmby
26
Coba gunakan android:color="@null"untuk menghindari masalah latar belakang buram.
Matt Briançon
@emmby: saat menguji kode ini di tablet, perlu waktu untuk menampilkan di layar, setelah batas 1 detik ditampilkan ketika saya menggulir
Chetan
5
Trik android: color = "@ null" tidak membantu saya untuk menjaga transparansi dan hanya menampilkan batas di satu sisi tampilan. Jawaban dari user1051892 di bawah ini berhasil!
Rick Pastoor
8
Solusi ini membuat perbatasan di kiri dan kanan juga - meskipun lebih tipis.
AlikElzin-kilaka
279

Saya telah menggunakan trik agar perbatasan ditampilkan di luar wadah. Dengan trik ini hanya garis yang ditarik sehingga latar belakang akan ditampilkan dari tampilan yang mendasarinya.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:bottom="1dp"
        android:left="-2dp"
        android:right="-2dp"
        android:top="-2dp">
        <shape android:shape="rectangle" >
            <stroke
                android:width="1dp"
                android:color="#FF000000" />

            <solid android:color="#00FFFFFF" />

            <padding android:left="10dp"
                android:right="10dp"
                android:top="10dp"
                android:bottom="10dp" />
        </shape>
    </item>

</layer-list>
pengguna1051892
sumber
3
Ini bekerja baik untuk saya, dengan beberapa penyesuaian untuk membuat garis sedikit lebih tipis.
Jeff
1
Trik yang sangat bagus, meskipun bisa lebih baik jika kita tidak perlu mengelabui komputer untuk menyelesaikan sesuatu.
Yukio Fukuzawa
dilakukan dengan baik! apa yang harus Anda perhatikan adalah item kiri, atas, kanan, bawah harus - (lebar stroke) dp
asakura89
Tidak menunjukkan batas apa pun - hanya membuat konten tampilan saya terlihat lebih kecil :(
AlikElzin-kilaka
1
Dilakukan dengan baik, bekerja dengan latar belakang transparan. Diuji dalam 2.2 dan 4.4.2. Harus mencakup semuanya :)
HumaN
97

Opsi 1: Shape Drawable

Ini adalah opsi paling sederhana jika Anda ingin perbatasan di sekitar tata letak atau tampilan di mana Anda dapat mengatur latar belakang. Buat file XML di drawablefolder yang terlihat seperti ini:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="#8fff93" />

    <stroke
        android:width="1px"
        android:color="#000" />

</shape>

Anda dapat menghapus solidjika Anda tidak ingin isi. Set background="@drawable/your_shape_drawable"pada tata letak / tampilan Anda.

Opsi 2: Tampilan Latar Belakang

Berikut adalah sedikit trik yang saya gunakan dalam RelativeLayout. Pada dasarnya Anda memiliki kotak hitam di bawah tampilan yang ingin Anda beri batas, dan kemudian memberikan tampilan itu padding (bukan margin!) Sehingga kotak hitam menunjukkan melalui di tepi.

Jelas ini hanya berfungsi dengan baik jika tampilan tidak memiliki area transparan. Jika ya saya sarankan Anda menulis kebiasaan BorderViewyang hanya menggambar perbatasan - seharusnya hanya beberapa lusin baris kode.

<View
    android:id="@+id/border"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/image"
    android:layout_alignLeft="@+id/image"
    android:layout_alignRight="@+id/image"
    android:layout_alignTop="@+id/main_image"
    android:background="#000" />

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_...
    android:padding="1px"
    android:src="@drawable/..." />

Jika Anda bertanya-tanya, itu tidak bekerja dengan adjustViewBounds=true. Namun, itu tidak berfungsi jika Anda ingin memiliki latar belakang secara keseluruhan RelativeLayout, karena ada bug yang menghentikan Anda mengisi RelativeLayoutdengan a View. Dalam hal ini saya akan merekomendasikan Shapedigambar.

Opsi 3: 9-patch

Opsi terakhir adalah menggunakan draw-draw 9-patch seperti ini:

Anda dapat menggunakannya pada tampilan apa pun di mana Anda dapat mengatur android:background="@drawable/...". Dan ya itu harus 6x6 - Saya mencoba 5x5 dan tidak berhasil.

Kerugian dari metode ini adalah Anda tidak dapat mengubah warna dengan sangat mudah, tetapi jika Anda ingin batas mewah (misalnya hanya perbatasan di bagian atas dan bawah, seperti dalam pertanyaan ini) maka Anda mungkin tidak dapat melakukannya dengan Shapedrawable , yang tidak terlalu kuat.

Opsi 4: Tampilan ekstra

Saya lupa menyebutkan opsi yang sangat sederhana ini jika Anda hanya ingin batas di atas dan di bawah tampilan Anda. Anda dapat menempatkan tampilan Anda secara vertikal LinearLayout(jika belum) dan kemudian tambahkan Views kosong di atas dan di bawahnya seperti ini:

<View android:background="#000" android:layout_width="match_parent" android:layout_height="1px"/>
Timmmm
sumber
4
9 patch dan drawable bentuk ok, tetapi saya akan merekomendasikan agar tidak menambahkan tampilan atau tampilan gambar untuk menyelesaikan masalah seperti itu. Alasannya adalah bahwa Anda harus menghapus <elements> sebanyak itu dari tata letak Anda untuk meningkatkan redrawing dan animasi tata letak. Saya akan menghapus ini segera dan mengimplementasikan beberapa yang mirip dengan opsi 1 atau 2.
Emile
2
@ Emile Itu benar, tetapi jika Anda menggunakan ListView khusus yang tidak mendukung pembagi, tampilan sederhana tidak masalah. Dampak kinerja berada di sebelah nol, terutama jika Anda yakin akan mempertahankan kedalaman tata letak Anda. Ini juga menghindari bug dengan pembagi ListView di seluruh perangkat (saya telah melihat beberapa perangkat yang mengabaikan properti ini).
Tom
Anda juga dapat menggunakan pola penampil yang efisien dengan tampilan daftar untuk memastikan Anda mengurangi jumlah panggilan untuk menemukanViewByID yang sering menjadi penyebab buruknya kinerja daftar.
Emile
Di iOS Anda hanya memiliki satu cara untuk melakukan itu. Di android Anda harus menguji setidaknya empat, dalam kasus saya opsi 4 adalah cara untuk pergi. Terkadang digambar sebagai latar belakang menggantung untuk membuat, sadar akan hal itu.
Ratata Tata
1
Mengapa android tidak memiliki solusi termudah untuk hal-hal seperti itu? seperti dalam bahasa lain, seperti HTML, CSS, atau sesuatu JavaFX, WPF ......
Asif Mushtaq
95

Untuk menambahkan 1dpbatas putih di bagian bawah saja dan memiliki latar belakang transparan, Anda dapat menggunakan yang berikut ini yang lebih sederhana daripada kebanyakan jawaban di sini.

Untuk tampilan TextViewatau lainnya, tambahkan:

android:background="@drawable/borderbottom"

Dan di drawabledirektori tambahkan XML berikut, yang disebutborderbottom.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="-2dp" android:left="-2dp" android:right="-2dp">
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="#ffffffff" />
            <solid android:color="#00000000" />
        </shape>
    </item>
</layer-list>

Jika Anda ingin perbatasan di bagian atas, ubah android:top="-2dp"keandroid:bottom="-2dp"

Warnanya tidak harus putih dan latar belakangnya juga tidak perlu transparan.

The solidelemen mungkin tidak diperlukan. Ini akan tergantung pada desain Anda (terima kasih V. Kalyuzhnyu).

Pada dasarnya, XML ini akan membuat perbatasan menggunakan bentuk persegi panjang, tetapi kemudian mendorong sisi atas, kanan dan kiri di luar area render untuk bentuk. Ini hanya menyisakan batas bawah.

Tigger
sumber
8
Ini adalah solusi terbaik, karena tidak menciptakan overdraw seperti yang lain
Greg Ennis
Apakah ada alasan bahwa posisi negatif dua kali lebih besar dari stroke dengan ( -2dpvs 1dp)? Tampaknya bekerja ketika jumlahnya sama ( -1dan 1).
Denis Kniazhev
@DenisKniazhev: Saat menggunakan -2dphasilnya selalu bersih. Saya pikir ada test case di mana hasilnya tidak bersih. Saya tidak ingat apakah itu layar kepadatan rendah atau tinggi atau bahkan versi Android yang lebih lama (2.x mungkin).
Tigger
Menarik. Apakah Anda tahu apakah ini merupakan kasus umum, misalnya jika saya gunakan 4dpuntuk lebar goresan yang harus saya gunakan -8dpuntuk penentuan posisi?
Denis Kniazhev
1
@DenisKniazhev: (dari memori) tampak seperti perhitungan floating point yang hanya sedikit ke besar atau kecil. Ini berarti nilai -5dpakan semua yang dibutuhkan dengan nilai lebar 4pd. Hanya perlu menjadi sedikit lebih besar untuk mengatasi ketidakakuratan nilai float.
Tigger
36

Jawaban yang diterima saat ini tidak berfungsi. Ini menciptakan batas vertikal tipis di sisi kiri dan kanan tampilan sebagai hasil dari anti-aliasing.

Versi ini berfungsi dengan baik. Ini juga memungkinkan Anda untuk mengatur lebar perbatasan secara independen, dan Anda juga dapat menambahkan batas di sisi kiri / kanan jika Anda mau. Satu-satunya kelemahan adalah TIDAK mendukung transparansi.

Buat xml drawable yang diberi nama /res/drawable/top_bottom_borders.xmldengan kode di bawah ini dan tetapkan sebagai properti latar belakang TextView.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#DDDD00" /> <!-- border color -->
        </shape>
    </item>

    <item
        android:bottom="1dp" 
        android:top="1dp">   <!-- adjust borders width here -->
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />  <!-- background color -->
        </shape>
    </item>
</layer-list>

Diuji pada Android KitKat melalui Marshmallow

gregschlom
sumber
Bagaimana cara membuat bagian dalam transparan?
Hitesh Sahu
1
@HiteshSahu Saya pikir downside dari ini adalah bahwa Anda harus mencocokkan latar belakang tata letak dengan latar belakang widget di sini
chntgomez
35

Jadi saya ingin melakukan sesuatu yang sedikit berbeda: perbatasan di bagian bawah SAJA, untuk mensimulasikan pembagi ListView. Saya mengubah jawaban Piet Delport dan mendapatkan ini:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
   <item>
      <shape 
        android:shape="rectangle">
            <solid android:color="@color/background_trans_light" />    

        </shape>
   </item>

    <!-- this mess is what we have to do to get a bottom border only. -->
   <item android:top="-2dp"
         android:left="-2dp"
         android:right="-2dp"
         android:bottom="1px"> 
      <shape 
        android:shape="rectangle">    
            <stroke android:width="1dp" android:color="@color/background_trans_mid" />
            <solid android:color="@null" />
        </shape>
   </item>

</layer-list>

Catatan menggunakan px dan bukan dp untuk mendapatkan pembagi 1 piksel (beberapa DPI telepon akan membuat garis 1dp menghilang).

phreakhead
sumber
2
terhormat! apa nilainya "@color/background_trans_light"?
Shajeel Afzal
Cheers @phreakhead, ini benar-benar bekerja untuk saya! Tidak ada batas atas, kiri, atau kanan. Apa yang saya butuhkan, terima kasih!
shanehoban
2
Bisakah Anda jelaskan mengapa ketika Anda meletakkan -2dp itu menghilang dan ketika Anda meletakkan -1dp itu masih terlihat? Terima kasih!
Francisco Romero
9

Seperti yang dikatakan @Nic Hubbard, ada cara yang sangat mudah untuk menambahkan garis perbatasan.

<View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="#000000" >
</View>

Anda dapat mengubah tinggi dan warna latar belakang ke apa pun yang Anda inginkan.

MattZ
sumber
8

Jawaban saya didasarkan pada versi @Emile tapi saya menggunakan warna transparan dan bukan padat.
Contoh ini akan menggambar batas bawah 2dp.

<?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:width="2dp"
                     android:color="#50C0E9" />
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
    <item  android:bottom="2dp" >
        <shape android:shape="rectangle" >
            <stroke  android:width="2dp"
                     android:color="@color/bgcolor" />
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>

@ color / bgcolor adalah warna latar belakang di mana Anda menggambar tampilan dengan batas.

Jika Anda ingin mengubah posisi perbatasan, ganti offset dengan salah satu dari:

android:bottom="2dp"
android:top="2dp"
android:right="2dp"
android:left="2dp"

atau gabungkan mereka untuk memiliki 2 batas atau lebih:

android:bottom="2dp" android:top="2dp"
vovahost
sumber
7

Anda juga dapat membungkus tampilan dalam FrameLayout, kemudian mengatur warna latar belakang bingkai dan padding dengan apa yang Anda inginkan; namun, tampilan teks, secara default memiliki latar belakang 'transparan', jadi Anda perlu mengubah warna latar tampilan teks juga.

okaram
sumber
Cukup mudah. Anda mengontrol ukuran dan arah garis besar dengan margin Tampilan bagian dalam. Terima kasih.
Scott Biggs
5

Mengapa tidak membuat tampilan 1dp tinggi dengan warna latar belakang? Maka dapat dengan mudah ditempatkan di tempat yang Anda inginkan.

Nic Hubbard
sumber
4

Hanya untuk menambahkan solusi saya ke daftar ..

Saya ingin batas bawah semi transparan yang melampaui bentuk aslinya (Jadi perbatasan semi-transparan berada di luar persegi panjang induk).

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
  <item>
    <shape android:shape="rectangle" >      
      <solid android:color="#33000000" /> <!-- Border colour -->
    </shape>
  </item>
  <item  android:bottom="2dp" >
    <shape android:shape="rectangle" >     
      <solid android:color="#164586" />
    </shape>
  </item>
</layer-list>

Yang memberi saya;

masukkan deskripsi gambar di sini

Cadab
sumber
4

Untuk mengubah ini:

<TextView
    android:text="My text"
    android:background="@drawable/top_bottom_border"/>

Saya lebih suka pendekatan ini di "drawable / top_bottom_border.xml":

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <gradient
                android:angle="270"
                android:startColor="#000"
                android:centerColor="@android:color/transparent"
                android:centerX="0.01" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient
                android:angle="90"
                android:startColor="#000"
                android:centerColor="@android:color/transparent"
                android:centerX="0.01" />
        </shape>
    </item>
</layer-list>

Ini hanya membuat batas, bukan persegi panjang yang akan muncul jika latar belakang Anda memiliki warna.

Dinidiniz
sumber
3

Pertama buat file xml dengan konten yang ditunjukkan di bawah ini dan beri nama border.xml dan letakkan di dalam folder layout di dalam direktori res

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="1dp" android:color="#0000" />
    <padding android:left="0dp" android:top="1dp" android:right="0dp"
        android:bottom="1dp" />
</shape>

Setelah itu di dalam menggunakan kode

TextView tv = (TextView)findElementById(R.id.yourTextView);
tv.setBackgroundResource(R.layout.border);

Ini akan membuat garis hitam di atas dan bawah TextView.

Nikhil Dinesh
sumber
Ya, Ini akan Berhasil, saya sudah memeriksanya. Tombol tombol = (Tombol) findViewById (R.id.button); button.setBackgroundResource (R.layout.border);
Nikhil Dinesh
Saya telah menggunakan warna hitam dalam file xml di atas, warna latar belakang Anda mungkin hitam, coba dengan menggunakan beberapa warna lain. Ini pasti akan bekerja <? Xml version = "1.0" encoding = "UTF-8"?> <Bentuk xmlns: android = " schemas.android.com/apk/res/android "> <solid android: color = "# 474848 "/> <stroke android: width =" 1dp "android: color =" # ffff00 "/> <padding android: left =" 1dp "android: top =" 1dp "android: kanan =" 1dp "android: bottom =" 1dp "/> </shape>
Nikhil Dinesh
1
Tidak bekerja untuk saya. Garis perbatasan dilukis di tengah tampilan teks - secara horizontal.
AlikElzin-kilaka
3

Tuliskan kode di bawah ini

<View
    android:layout_width="wrap_content"
    android:layout_height="2dip"
    android:layout_below="@+id/topics_text"
    android:layout_marginTop="7dp"
    android:layout_margin="10dp"
    android:background="#ffffff" />
Abhi
sumber
2

Inilah cara untuk mencapainya.

    <?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:width="1dp"
                    android:color="@color/grey_coaching_text" />
            </shape>
        </item>

        <item
            android:bottom="1dp"
            android:top="1dp">
            <shape android:shape="rectangle">
                <solid android:color="@color/white" />
            </shape>
        </item>
    </layer-list>

Item pertama untuk stroke dan yang kedua untuk latar belakang yang solid. Menyembunyikan batas kiri dan kanan.

Kavya Shravan
sumber
2

Cara termudah untuk menambahkan batas pada inset batas menggunakan InsetDrawable, berikut ini hanya akan menampilkan batas atas:

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetBottom="-2dp"
    android:insetLeft="-2dp"
    android:insetRight="-2dp">
    <shape android:shape="rectangle">

        <solid android:color="@color/light_gray" />
        <stroke
            android:width=".5dp"
            android:color="@color/dark_gray" />
    </shape>
</inset>
Zaid Mirza
sumber
2

Tambahkan file ke res / drawable

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:left="-2dp" android:right="-2dp">
            <shape android:shape="rectangle">
                <stroke
                    android:width="1dp"
                    android:color="#000000" />
            </shape>
        </item>
    </layer-list>

Tambahkan tautan pada file ini ke properti latar belakang

Oleg
sumber
1

Coba balutkan gambar dengan linearlayout, dan atur latar belakangnya ke warna tepi yang Anda inginkan di sekitar teks. Kemudian atur padding pada tampilan teks menjadi ketebalan yang Anda inginkan untuk batas Anda.

Mat
sumber
1

Anda juga dapat menggunakan 9 jalur untuk melakukan pekerjaan Anda. Buat agar piksel berwarna tidak bertambah banyak tetapi hanya piksel transparan.

Kowlown
sumber
1
<shape xmlns:android="http://schemas.android.com/apk/res/android">

<solid android:color="@color/light_grey1" />
<stroke
    android:width="1dip"
    android:color="@color/light_grey1" />

<corners
    android:bottomLeftRadius="0dp"
    android:bottomRightRadius="0dp"
    android:topLeftRadius="5dp"
    android:topRightRadius="5dp" />

    </shape>
Vinoj Vetha
sumber
1

Cukup tambahkan Tampilan di bagian atas dan bawah View

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/your_color"
        app:layout_constraintBottom_toTopOf="@+id/textView"
        app:layout_constraintEnd_toEndOf="@+id/textView"
        app:layout_constraintStart_toStartOf="@+id/textView" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:gravity="center"
        android:text="Testing"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/your_color"
        app:layout_constraintEnd_toEndOf="@+id/textView"
        app:layout_constraintStart_toStartOf="@+id/textView"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

</android.support.constraint.ConstraintLayout>
Levon Petrosyan
sumber
0
// Just simply add border around the image view or view

<ImageView
                android:id="@+id/imageView2"
                android:layout_width="90dp"
                android:layout_height="70dp"
                android:layout_centerVertical="true"
                android:layout_marginRight="10dp"
                android:layout_toLeftOf="@+id/imageView1"
                android:background="@android:color/white"
                android:padding="5dip" />

// After that dynamically put color into your view or image view object

objView.setBackgroundColor(Color.GREEN);

//VinodJ/Abhishek
Vinod Joshi
sumber
-1
<TextView
    android:id="@+id/textView3"
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="#72cdf4"
    android:text=" aa" />

Cukup Tambahkan TextView ini di bawah teks di mana Anda ingin menambahkan perbatasan

Aquib Maniyar
sumber
-1

Hanya untuk menegakkan jawaban @phreakhead dan user1051892 , <item android:bottom|android:left|android:right|android:top>jika negatif, harus lebih besar dari <stroke android:width>. Jika tidak, lukisan item akan dicampur dengan lukisan stroke dan Anda mungkin berpikir nilai-nilai ini tidak berfungsi.

Garry Dias
sumber