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:
package com.realactionsoft.android.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewTreeObserver;
import android.widget.TextView;
public class CapitalizedTextView extends TextView implements ViewTreeObserver.OnPreDrawListener {
public CapitalizedTextView(Context context) {
super(context);
}
public CapitalizedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CapitalizedTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void setText(CharSequence text, BufferType type) {
super.setText(text.toString().toUpperCase(), type);
}
}
Dan setiap kali Anda perlu menggunakannya, cukup deklarasikan dengan semua paket di tata letak XML:
<com.realactionsoft.android.widget.CapitalizedTextView
android:id="@+id/text_view_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
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.