Apakah mungkin menggambar batas di sekitar tampilan teks?
android
android-layout
textview
yamspog
sumber
sumber
Jawaban:
Anda dapat mengatur bentuk yang dapat digambar (persegi panjang) sebagai latar belakang tampilan.
Dan rect. drawable back.xml (dimasukkan ke dalam folder res / drawable):
Anda dapat menggunakan
@android:color/transparent
warna solid untuk memiliki latar belakang transparan. Anda juga dapat menggunakan padding untuk memisahkan teks dari perbatasan. untuk informasi lebih lanjut, lihat: http://developer.android.com/guide/topics/resources/drawable-resource.htmlsumber
Biarkan saya merangkum beberapa metode (non-programatik) yang berbeda.
Menggunakan bentuk yang bisa digambar
Simpan yang berikut ini sebagai file XML di folder yang dapat digambar (misalnya, my_border.xml):
Kemudian atur saja sebagai latar belakang untuk TextView Anda:
Lebih banyak bantuan:
Menggunakan 9-patch
9-patch adalah gambar latar yang dapat diregangkan. Jika Anda membuat gambar dengan perbatasan maka itu akan memberi TextView Anda perbatasan. Yang perlu Anda lakukan adalah membuat gambar dan kemudian mengaturnya ke latar belakang di TextView Anda.
Berikut adalah beberapa tautan yang akan menunjukkan cara membuat gambar 9-patch:
Bagaimana jika saya hanya ingin batas atas?
Menggunakan daftar layer
Anda dapat menggunakan daftar lapisan untuk menumpuk dua persegi panjang di atas satu sama lain. Dengan membuat persegi panjang kedua hanya sedikit lebih kecil dari persegi panjang pertama, Anda dapat membuat efek perbatasan. Kotak pertama (bawah) adalah warna batas dan kotak kedua adalah warna latar belakang.
Pengaturan
android:top="2dp"
mengimbangi bagian atas (membuatnya lebih kecil) dengan 2dp. Ini memungkinkan kotak (bawah) pertama terlihat, memberikan efek batas. Anda bisa menerapkan ini pada latar belakang TextView dengan cara yang sama sepertishape
drawable dilakukan di atas.Berikut ini beberapa tautan tentang daftar lapisan:
Menggunakan 9-patch
Anda bisa membuat gambar 9-patch dengan satu perbatasan. Yang lainnya sama dengan yang dibahas di atas.
Menggunakan Tampilan
Ini semacam trik tetapi berfungsi baik jika Anda perlu menambahkan pemisah antara dua tampilan atau perbatasan ke satu TextView.
Berikut beberapa tautan:
sumber
border: 1px solid #999;
tidak seharusnya serumit ini .Cara sederhana adalah menambahkan tampilan untuk TextView Anda. Contoh untuk garis batas bawah:
Untuk batas arah lainnya, harap sesuaikan lokasi tampilan pemisah.
sumber
Saya telah memecahkan masalah ini dengan memperluas tampilan teks dan menggambar perbatasan secara manual. Saya bahkan menambahkan sehingga Anda dapat memilih apakah perbatasan putus-putus atau putus-putus.
Dan kelas perbatasan:
Semoga ini bisa membantu seseorang :)
sumber
Saya hanya melihat jawaban yang serupa - itu dapat dilakukan dengan Stroke dan penggantian berikut:
sumber
Anda dapat mengatur perbatasan dengan dua metode. Satu dengan drawable dan yang kedua adalah terprogram.
Menggunakan Drawable
Terprogram
sumber
Solusi paling sederhana yang saya temukan (dan yang benar-benar berfungsi):
sumber
Saya menemukan cara yang lebih baik untuk meletakkan perbatasan di sekitar TextView.
Gunakan gambar sembilan-tambalan untuk latar belakang. Ini cukup sederhana, SDK dilengkapi dengan alat untuk membuat gambar 9-patch, dan sama sekali tidak melibatkan pengodean.
Tautannya adalah http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch .
sumber
Anda dapat menambahkan sesuatu seperti ini dalam kode Anda:
sumber
Periksa tautan di bawah ini untuk membuat sudut membulat http://androidcookbook.com/Recipe.seam?recipeId=2318
Folder yang dapat digambar, dalam resolusi, dalam proyek Android tidak terbatas pada bitmap (file PNG atau JPG), tetapi juga dapat menyimpan bentuk yang ditentukan dalam file XML.
Bentuk-bentuk ini kemudian dapat digunakan kembali dalam proyek. Bentuk dapat digunakan untuk meletakkan batas di sekitar tata letak. Contoh ini menunjukkan perbatasan persegi panjang dengan sudut melengkung. File baru bernama customborder.xml dibuat di folder drawable (di Eclipse gunakan menu File dan pilih New then File, dengan folder drawable pilih jenis dalam nama file dan klik Finish).
XML yang mendefinisikan bentuk batas dimasukkan:
Atribut
android:shape
diatur ke kotak (bentuk file juga mendukung oval, garis, dan dering). Rectangle adalah nilai default, jadi atribut ini bisa ditinggalkan jika itu adalah rectangle yang didefinisikan. Lihat dokumentasi Android tentang bentuk di http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape untuk informasi terperinci tentang file bentuk.Sudut elemen menetapkan sudut persegi panjang untuk dibulatkan. Dimungkinkan untuk mengatur radius yang berbeda di setiap sudut (lihat referensi Android).
Atribut padding digunakan untuk memindahkan konten View ke mana bentuk diterapkan, untuk mencegah konten tumpang tindih perbatasan.
Warna tepi di sini diatur ke abu-abu terang (nilai RGB heksadesimal).
Bentuk juga mendukung gradien, tetapi itu tidak digunakan di sini. Sekali lagi, lihat sumber daya Android untuk melihat bagaimana gradien didefinisikan. Bentuknya diterapkan pada laypout menggunakan
android:background="@drawable/customborder"
.Dalam tata letak, tampilan lain dapat ditambahkan seperti biasa. Dalam contoh ini, satu TextView telah ditambahkan, dan teks berwarna putih (FFFFFF hexadecimal RGB). Latar diatur ke biru, ditambah transparansi untuk mengurangi kecerahan (nilai RGB alpha heksadesimal A00000FF). Akhirnya tata letak diimbangi dari tepi layar dengan menempatkannya ke tata letak lain dengan sedikit bantalan. File tata letak lengkap dengan demikian:
sumber
Saya memiliki cara untuk melakukannya dengan sangat sederhana, dan saya ingin membagikannya.
Ketika saya ingin mengosongkan mi TextViews, saya hanya meletakkannya di LinearLayout. Saya mengatur warna latar belakang LinearLayout saya, dan saya menambahkan margin ke TextView saya. Hasilnya persis seperti jika Anda mengkuadratkan TextView.
sumber
Mengubah jawaban Konstantin Burov karena tidak berfungsi dalam kasus saya:
compileSdkVersion 26 (Android 8.0), minSdkVersion 21 (Android 5.0), targetSdkVersion 26, implementasi 'com.android.support:appcompat-v7:26.1.0', gradle: 4.1
sumber
Anda dapat membuat latar belakang khusus untuk tampilan teks Anda. Langkah 1. Pergi ke proyek Anda. 2. Pergi ke sumber daya dan klik kanan untuk menggambar. 3. Klik New -> Drawable Resource File 4. Beri nama untuk Anda file 5. Tempel kode berikut dalam file
Untuk tampilan teks Anda di mana Anda ingin menggunakannya sebagai backgroud,
android: background = "@ drawable / your_fileName"
sumber
Ini adalah kelas pembantu 'sederhana' saya yang mengembalikan ImageView dengan perbatasan. Jatuhkan saja ini di folder utils Anda, dan namai seperti ini:
Ini kodenya.
sumber
selectionBorder
?Ini dapat membantu Anda.
sumber
Buat tampilan tepi dengan warna latar belakang sebagai warna tepi dan ukuran tampilan teks Anda. mengatur padding tampilan perbatasan sebagai lebar perbatasan. Atur warna latar belakang tampilan teks sebagai warna yang Anda inginkan untuk tampilan teks. Sekarang tambahkan tampilan teks Anda di dalam tampilan perbatasan.
sumber
Coba ini:
sumber
Ada banyak cara untuk menambahkan perbatasan ke textView. Yang paling sederhana adalah dengan membuat custom drawable dan mengaturnya
android:background="@drawable/textview_bg"
untuk textView Anda.Textview_bg.xml akan berada di bawah Drawables dan bisa jadi seperti ini. Anda dapat memiliki
solid
ataugradient
latar belakang (atau tidak sama sekali jika tidak diperlukan),corners
untuk menambahkan jari-jari sudut danstroke
menambahkan batas.textview_bg.xml
sumber
kode ini cukup Anda dapat menempatkan di mana pun Anda inginkan
sumber
setBackground pada tampilan teks xml Anda,
tambahkan file rounded_textview.xml ke direktori yang dapat digambar.
atur file yang dapat digambar di latar textView.
sumber
Sebenarnya sangat sederhana. Jika Anda ingin kotak hitam sederhana di belakang Textview, cukup tambahkan
android:background="@android:color/black"
di dalam tag TextView. Seperti ini:sumber