Saya mencoba menambahkan sedikit ruang di antara baris ke TextViews saya menggunakan android:lineSpacingMultiplier
dari dokumentasi :
Spasi ekstra antara baris teks, sebagai pengganda.
Harus berupa nilai floating point, seperti "1.2".
Karena saya menggunakan ini di beberapa TextViews yang berbeda, saya ingin menambahkan dimensi / nilai global ke sumber daya saya, tetapi saya tidak tahu tag mana yang digunakan, jika itu ada. Saya telah mencoba semua jenis sumber daya yang masuk akal bagi saya, tetapi tidak ada yang berfungsi.
Yang ingin saya miliki adalah sesuatu seperti ini:
<resources>
<dimen name="text_line_spacing">1.4</dimen>
</resources>
Sunting: Saya sadar android:lineSpacingExtra
(yang membutuhkan dimensi dengan unit yang ditambahkan), tetapi saya ingin menggunakannya android:lineSpacingMultiplier
jika memungkinkan.
<item type="string" format="float" name="my_float">0.5</item>
dan kode ini untuk mengambilnya:float my_float = Float.parseFloat (getResources ().getString (R.string.my_float));
<string>
tag?Seperti dijelaskan dalam tautan ini http://droidista.blogspot.in/2012/04/adding-float-value-to-your-resources.html
Nyatakan dalam dimen.xml
Referensi dari xml
Referensi dari java
sumber
Semua solusi menyarankan Anda untuk menggunakan nilai float yang telah ditentukan melalui kode.
Tetapi jika Anda bertanya-tanya bagaimana referensi nilai float yang telah ditentukan dalam XML (misalnya tata letak), maka berikut ini adalah contoh dari apa yang saya lakukan dan itu bekerja dengan sempurna:
Tetapkan nilai sumber daya sebagai
type="integer"
tetapiformat="float"
, misalnya:Dan kemudian menggunakannya dalam tata letak Anda menggunakan
@integer/name_of_resource
, misalnya:sumber
<dimen>
Saya juga menemukan solusi yang tampaknya berfungsi dengan baik tanpa peringatan:
Kemudian:
Peringatan : ini hanya berfungsi ketika Anda menggunakan dimen dari kode Java bukan dari xml
sumber
type="fraction"
untuk menghindari kesalahan dalam kode JavaTambahkan float ke dimens.xml:
<item format="float" name="my_dimen" type="dimen">1.2</item>
Untuk referensi dari XML:
Untuk membaca nilai ini secara terprogram Anda dapat menggunakan
ResourcesCompat.getFloat
dari androidx.coreKetergantungan Gradle:
implementation("androidx.core:core:${version}")
Pemakaian:
sumber
Kita juga bisa menggunakannya untuk panduan tata letak kendala.
Buat file integer.xml dan tambahkan
Gunakan dari file layout.xml
sumber
Saya menggunakan gaya untuk mengatasi masalah ini. Tautan resmi ada di sini .
Hal yang cukup berguna. Anda membuat file untuk menahan gaya Anda (seperti "styles.xml"), dan mendefinisikannya di dalamnya. Anda kemudian mereferensikan gaya dalam tata letak Anda (seperti "main.xml").
Berikut ini contoh gaya yang melakukan apa yang Anda inginkan:
Katakanlah Anda ingin mengubah TextView sederhana dengan ini. Di file tata letak Anda, Anda akan mengetik:
Cobalah - ini pada dasarnya adalah bagaimana semua built-in UI dilakukan di android. Dan dengan menggunakan gaya, Anda memiliki opsi untuk memodifikasi segala macam aspek lain dari Tampilan Anda juga.
sumber
Jika Anda memiliki float sederhana yang mengontrol rentangnya, Anda juga dapat memiliki bilangan bulat dalam sumber daya dan membaginya dengan jumlah tempat desimal yang Anda perlukan langsung dalam kode.
Jadi sesuatu seperti ini
digunakan dengan 2 tempat desimal
dan itu membuatnya 3.56f
Tidak mengatakan ini adalah solusi yang paling elegan tetapi untuk proyek-proyek sederhana, lebih mudah.
sumber
Saya menemukan solusi, yang berfungsi, tetapi menghasilkan
Warning
(WARN/Resources(268): Converting to float: TypedValue{t=0x3/d=0x4d "1.2" a=2 r=0x7f06000a}
) di LogCat.sumber
Meskipun saya telah menggunakan jawaban yang diterima di masa lalu, sepertinya dengan Alat Bangun saat ini dimungkinkan untuk dilakukan:
Saya menggunakan Build Tools versi utama 29.
sumber