Saya ingin dapat menetapkan atribut atau gaya xml ke TextView
yang akan membuat teks apa pun di SEMUA SURAT MODAL.
Atribut android:inputType="textCapCharacters"
dan android:capitalize="characters"
tidak melakukan apa pun dan terlihat seperti itu untuk teks yang dimasukkan pengguna, bukan a TextView
.
Saya ingin melakukan ini sehingga saya dapat memisahkan gaya dari konten. Saya tahu saya bisa melakukan ini secara pemrograman tetapi sekali lagi saya ingin menjaga gaya dari konten dan kode.
android
textview
capitalization
cottonBallPaws
sumber
sumber
Jawaban:
Saya pikir itu permintaan yang cukup masuk akal tapi sepertinya Anda tidak bisa melakukannya saat ini. Kegagalan Total. lol
Memperbarui
Anda sekarang dapat menggunakan textAllCaps untuk memaksa semua huruf besar.
sumber
textAllCaps
menyebabkan aplikasi mogok jika Anda tentukanandroid:fontFamily
dithemes.xml
.Bagaimana dengan android: textAllCaps ?
sumber
Dengan menggunakan AppCompat
textAllCaps
di Aplikasi Android yang mendukung API lama (kurang dari 14)Ada satu widget UI yang dikirimkan dengan AppCompat bernama CompatTextView adalah ekstensi Custom TextView yang menambahkan dukungan untuk textAllCaps
Untuk API Android yang lebih baru> 14 Anda dapat menggunakan:
Contoh sederhana:
Sumber: developer.android
Memperbarui:
sumber
CompatTextView
digunakan diScrollingTabCointainerView
mana digunakanToolbarWidgetWrapper
, yang terdengar cukup baru dan selama namanya tetap "v7" dalam namanya, ini adalah jaminan yang cukup baik bagi saya yangCompatTextView
akan tetap di tempatnya.CompatTextView
digantikan olehAppCompatTextView
di perpustakaan appcompat-v7 terbaru. Anda benar sekali.Sangat mengecewakan bahwa Anda tidak dapat melakukannya dengan styles (
<item name="android:textAllCaps">true</item>
) atau pada setiap file layout XML dengan atribut textAllCaps , dan satu-satunya cara untuk melakukannya adalah dengan menggunakan Strtr.toUpperCase () pada setiap string ketika Anda melakukannya. sebuah textViewXXX.setText (theString).Dalam kasus saya, saya tidak ingin memiliki Strtr.toUpperCase () di mana-mana dalam kode saya tetapi untuk memiliki tempat yang terpusat untuk melakukannya karena saya memiliki beberapa Kegiatan dan daftar tata letak item dengan TextViews bahwa di mana seharusnya dikapitalisasi sepanjang waktu (a judul) dan lainnya yang tidak ... jadi ... beberapa orang mungkin menganggapnya berlebihan, tapi saya membuat kelas CapitalizedTextView saya sendiri memperluas android.widget.TextView dan mengesampingkan metode setText dengan huruf besar teks dengan cepat.
Paling tidak, jika desain berubah atau saya perlu menghapus teks dengan huruf besar di versi mendatang, saya hanya perlu mengubah ke TextView normal di file tata letak.
Sekarang, pertimbangkan bahwa saya melakukan ini karena Perancang Aplikasi benar-benar menginginkan teks ini (judul) di CAPS di seluruh App, tidak peduli kapitalisasi konten asli, dan juga saya memiliki TextViews normal lainnya di mana kapitalisasi datang dengan konten aktual .
Ini kelasnya:
Dan setiap kali Anda perlu menggunakannya, cukup deklarasikan dengan semua paket di tata letak XML:
Beberapa orang akan berargumen bahwa cara yang benar untuk mendesain teks pada TextView adalah dengan menggunakan SpannableString , tapi saya pikir itu akan menjadi kerja keras yang lebih besar, belum lagi memakan banyak sumber daya karena Anda akan membuat kelas lain daripada TextView.
sumber
Saya telah datang dengan solusi yang mirip dengan RacZo dalam kenyataan bahwa saya juga telah membuat subkelas
TextView
yang menangani pembuatan teks huruf besar.Perbedaannya adalah bahwa alih-alih mengganti salah satu
setText()
metode, saya telah menggunakan pendekatan serupa dengan apa yangTextView
sebenarnya dilakukan pada API 14+ (yang menurut saya merupakan solusi yang lebih bersih).Jika Anda melihat ke sumbernya , Anda akan melihat penerapan
setAllCaps()
:The
AllCapsTransformationMethod
kelas tidak (saat ini) publik, tapi masih, sumber juga tersedia . Saya telah menyederhanakan kelas itu sedikit (menghapussetLengthChangesAllowed()
metode), jadi solusi lengkapnya adalah ini:sumber
Sepertinya ada izin untuk pengaturan keypad ponsel, jadi cara termudah untuk melakukannya adalah:
semoga ini berhasil
sumber
Proyek PixlUI memungkinkan Anda untuk menggunakan textAllCaps di semua tampilan teks atau subkelas tampilan teks termasuk: Tombol, EditText AutoCompleteEditText Checkbox RadioButton dan beberapa lainnya.
Anda perlu membuat tampilan teks menggunakan versi pixlui daripada yang dari sumber android, artinya Anda harus melakukan ini:
PixlUI juga memungkinkan Anda untuk mengatur jenis huruf / font khusus yang Anda masukkan ke folder aset Anda.
Saya sedang mengerjakan garpu Gradle dari kerangka PixlUI yang menggunakan gradle dan memungkinkan seseorang untuk menentukan textAllCaps serta jenis huruf dari gaya daripada membutuhkannya sesuai dengan proyek aslinya.
sumber