Ketika saya memiliki TextView
dengan \n
dalam teks ,, di sebelah kanan saya memiliki dua singleLine
TextView
, satu di bawah yang lain tanpa spasi di antaranya. Saya telah menetapkan yang berikut untuk ketiganya TextView
.
android:lineSpacingMultiplier="1"
android:lineSpacingExtra="0pt"
android:paddingTop="0pt"
android:paddingBottom="0pt"
Baris pertama dari TextView
garis kiri naik dengan sempurna dengan kanan atas TextView
.
Baris kedua kiri TextView
sedikit lebih tinggi dari baris kedua kanan bawah TextView
.
Tampaknya ada semacam bantalan tersembunyi di bagian atas dan bawah TextView
s. Bagaimana saya bisa menghapusnya?
Jawaban:
atau
XML
ini akan menjadi:Tetapkan apakah
TextView
termasuk padding ekstra atas dan bawah untuk memberikan ruang bagi aksen yang melampaui pendakian dan penurunan normal. Default-nya benar.sumber
1dp
bantalan atas / bawah, apakah saya salah? (Saya menggunakanDeveloper options -> Show layout bounds
)includeFontPadding="false"
memang menghapus beberapa ruang, tetapi tidak semuanya. sangat aneh.includeFontPadding
sangat bagus untuk menghapus padding tambahan dari font itu sendiri tetapi dapat menyebabkan masalah dalam bahasa yang memiliki ascenders dan descenders. Saya akan memastikan jika Anda melakukan ini Anda menguji bahasa seperti Spanyol dan Thailand jika Anda mendukungnya.Aku merasakan sakitmu. Saya sudah mencoba setiap jawaban di atas, termasuk
setIncludeFontPadding
ke false, yang tidak membantu saya.Solusi saya?
layout_marginBottom="-3dp"
pada bagianTextView
memberi Anda solusi untuk bagian bawah, BAM!Meskipun, -3dp aktif
layout_marginTop
gagal .... ugh.sumber
Saya mencari banyak jawaban yang tepat tetapi tidak ada tempat saya dapat menemukan Jawaban yang bisa menghilangkan semua padding dari
TextView
, tetapi akhirnya setelah melalui dokumen resmi mendapat pekerjaan untuk Single Line TextsMenambahkan dua baris ini ke
TextView
xml akan berhasil.Atribut pertama menghilangkan padding yang dicadangkan untuk aksen dan atribut kedua menghilangkan spasi yang disediakan untuk mempertahankan ruang yang tepat di antara dua baris teks.
sumber
fontPath
atribut?Jika Anda menggunakan
AppCompatTextView
(atau dariAPI 28
depan), Anda dapat menggunakan kombinasi kedua atribut tersebut untuk menghapus spasi di baris pertama:XML
Kotlin
sumber
Ini mengganggu saya juga, dan jawaban yang saya temukan adalah bahwa sebenarnya ada ruang tambahan di font itu sendiri, bukan TextView. Agak menyebalkan, berasal dari latar belakang penerbitan dokumen, terbatasnya kontrol yang Anda miliki dengan Android atas elemen tipografi. Saya akan merekomendasikan menggunakan jenis huruf khusus (seperti Bitstream Vera Sans, yang dilisensikan untuk redistribusi) yang mungkin tidak memiliki masalah ini. Saya tidak yakin secara spesifik apakah itu benar atau tidak.
sumber
Anda dapat mencoba menggunakan atribut ini (ConstraintLayout):
layout_constraintBaseline_toBaselineOf
Seperti ini:
sumber
Saya menghapus spasi dalam tampilan kustom saya - NoPaddingTextView.
https://github.com/SenhLinsh/NoPaddingTextView
sumber
Dengan ImageView tambahan kita dapat mengatur TextView menjadi garis dasar sejajar dengan ImageView dan mengatur
android:baselineAlignBottom
pada ImageView menjadi true, yang akan membuat garis dasar ImageView ke bawah. Tampilan lain dapat menyelaraskan dirinya menggunakan bagian bawah ImageView yang itu sendiri sama dengan garis dasar TextView.Namun ini hanya memperbaiki bagian bawah bantalan bukan bagian atas.
sumber
Saya pikir masalah ini dapat diselesaikan dengan cara ini:
Itulah hasilnya:
ScreenShot-1
ScreenShot-3
Meskipun garis karakter khusus di rightLowerText terlihat sedikit lebih tinggi daripada baris kedua dari leftText, garis dasarnya tetap sejajar.
sumber
Karena persyaratan saya menggantikan textView yang ada
findViewById(getResources().getIdentifier("xxx", "id", "android"));
, maka saya tidak bisa mencobaonDraw()
jawaban lain.Tapi saya baru saja mencari tahu langkah yang tepat untuk memperbaiki masalah saya, berikut ini adalah hasil akhir dari Inspektur Tata Letak:
Karena yang saya inginkan hanyalah menghapus spasi teratas, jadi saya tidak perlu memilih font lain untuk menghapus spasi bawah.
Ini kode penting untuk memperbaikinya:
Kunci pertama adalah mengatur font "fonts / myCustomFont.otf" khusus yang memiliki ruang di bagian bawah tetapi tidak di bagian atas, Anda dapat dengan mudah mengetahuinya dengan membuka file otf dan mengklik font apa saja di android Studio:
Seperti yang Anda lihat, kursor di bagian bawah memiliki spasi tambahan tetapi tidak di bagian atas, jadi itu memperbaiki masalah saya.
Kunci kedua adalah Anda tidak bisa melewatkan kode apa pun , jika tidak, kode itu mungkin tidak berfungsi. Itulah alasan Anda dapat menemukan beberapa orang berkomentar bahwa jawaban itu berfungsi dan beberapa orang lain berkomentar bahwa itu tidak berfungsi.
Mari kita ilustrasikan apa yang akan terjadi jika saya menghapus salah satunya.
Tanpa
setTypeface(mfont);
:Tanpa
setPadding(0, 0, 0, 0);
:Tanpa
setIncludeFontPadding(false);
:Tanpa 3 dari mereka (yaitu yang asli):
sumber
Satu-satunya hal yang berhasil adalah
sumber
XML yang diperbarui
sumber
Metode sederhana berhasil:
Jika tidak berhasil, cobalah untuk menambahkan ini di atas kode itu:
Jika Anda membutuhkan multi baris, mungkin Anda harus menghitung dengan tepat tinggi bantalan atas dan bawah melalui temp satu baris TextView (sebelum dan sesudah menghapus bantalan), lalu menerapkan penurunan hasil tinggi dengan bantalan negatif atau beberapa Tata Letak Hantu dengan menerjemahkan Y. Lol
sumber
Anda mungkin ingin mencoba menyelaraskan bagian bawah tampilan teks kiri dengan bagian bawah tampilan teks kanan ke-2.
sumber
Sepengetahuan saya ini melekat pada sebagian besar widget dan jumlah "padding" berbeda di antara produsen ponsel. Padding ini benar-benar ruang putih antara batas gambar dan gambar di file gambar 9 patch.
Sebagai contoh pada Droid X saya, widget pemintal mendapatkan ruang putih ekstra dari tombol, yang membuatnya terlihat canggung ketika Anda memiliki pemintal segaris dengan sebuah tombol, namun pada telepon istri saya aplikasi yang sama tidak memiliki masalah yang sama dan tampak hebat!
Satu-satunya saran yang saya miliki adalah membuat 9 file tambalan Anda sendiri dan menggunakannya dalam aplikasi Anda.
Ahhh rasa sakit itu adalah Android.
Diedit: Clarify padding vs white space.
sumber
Trik ini berhasil untuk saya (untuk min-SDK> = 18 ).
Saya menggunakan
android:includeFontPadding="false"
dan margin negatif sukaandroid:layout_marginTop="-11dp"
dan meletakkanTextView
bagian dalam sayaFrameLayout
( atau ViewGroup lainnya ... )dan akhirnya kode sampel:
sumber
Lihat ini:
Luruskan ImageView dengan EditText secara horizontal
Tampaknya gambar latar belakang EditText memiliki beberapa piksel transparan yang juga menambahkan padding.
Solusi adalah mengubah latar belakang default EditText ke sesuatu yang lain (atau tidak sama sekali, tetapi tidak ada latar belakang untuk EditText mungkin tidak dapat diterima). Itu bisa dibuat pengaturan android: atribut XML latar belakang.
sumber
Cukup gunakan
sumber
Gunakan ini di ImageView xml Anda
android: adjustViewBounds = "true"
sumber