Cara membuat huruf besar pada huruf pertama teks dalam TextView di Aplikasi Android

94

Saya juga tidak mengacu pada textInput. Maksud saya, setelah Anda memiliki teks statis dalam TextView (diisi dari panggilan Database ke data yang dimasukkan pengguna (yang mungkin tidak dikapitalisasi)), bagaimana saya bisa memastikannya menggunakan huruf besar?

Terima kasih!

Allen Gingrich
sumber
2
Untuk pengunjung di masa mendatang ... Di Kotlin cukup gunakan "abcd" .capitalize ())
Amit Tumkur

Jawaban:

186

Saya harus dapat mencapai ini melalui manipulasi string java standar, tidak ada yang spesifik Android atau TextView.

Sesuatu seperti:

String upperString = myString.substring(0, 1).toUpperCase() + myString.substring(1).toLowerCase();

Meskipun mungkin ada jutaan cara untuk melakukannya. Lihat dokumentasi String .

DIEDIT Saya menambahkan.toLowerCase()

Cheryl Simon
sumber
13
Hanya ingin mencatat bahwa ini adalah solusi yang baik untuk bahasa Inggris, tetapi tidak ramah lokalisasi.
Billy Lazzaro
71

Mengikuti tidak berlaku untuk TextView, tetapi bekerja dengan EditText; bahkan kemudian, ini berlaku untuk teks yang dimasukkan dari keyboard, bukan teks yang dimuat dengan setText (). Untuk lebih spesifik, ini mengaktifkan Caps di keyboard, dan pengguna dapat menggantinya sesuka dia.

android:inputType="textCapSentences"

atau

TV.sname.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

Ini akan CAP huruf pertama.

atau

compile 'org.apache.commons:commons-lang3:3.4' //in build.gradle module(app)

tv.setText(StringUtils.capitalize(myString.toLowerCase().trim()));
Beto Caldas
sumber
80
Ini tidak berlaku untuk TextView, tetapi hanya untuk EditText; bahkan kemudian, ini berlaku untuk teks yang dimasukkan dari keyboard, bukan teks yang dimuat dengan setText (). Untuk lebih spesifik, ini mengaktifkan Caps di keyboard, dan pengguna dapat menggantinya sesuka dia.
Alex Cohn
30
StringBuilder sb = new StringBuilder(name);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));  
return sb.toString();
noloman
sumber
22

untuk Kotlin, panggil saja

textview.text = string.capitalize()
Ben Kax
sumber
3
Saya akan berpikir itu akan menggunakan huruf besar setiap kata tetapi itu memang bekerja untuk kata pertama saja.
Skoua
Jika Anda menggunakan ini di aplikasi multibahasa, meneruskan lokal membuatnya lebih baik.
Dharmendra Pratap Singh
2

Bagi saya tidak ada yang berhasil:

Fungsi:

private String getCapsSentences(String tagName) {
    String[] splits = tagName.toLowerCase().split(" ");
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < splits.length; i++) {
        String eachWord = splits[i];
        if (i > 0 && eachWord.length() > 0) {
            sb.append(" ");
        }
        String cap = eachWord.substring(0, 1).toUpperCase() 
                + eachWord.substring(1);
        sb.append(cap);
    }
    return sb.toString();
}

Hasil:

I / P brain O / P Brain

I / P Brain and Health O / P Brain And Health

I / P brain And health ke O / P Brain And Health

I / P brain's Health ke O / P Brain's Health

I / P brain's Health and leg ke O / P Brain's Health And Leg

Semoga ini bisa membantu Anda.

Hiren Patel
sumber
2

Jawaban yang diterima bagus, tetapi jika Anda menggunakannya untuk mendapatkan nilai dari textView di android, sebaiknya periksa apakah string kosong. Jika string kosong, itu akan memunculkan pengecualian.

private String capitizeString(String name){
    String captilizedString="";
    if(!name.trim().equals("")){
       captilizedString = name.substring(0,1).toUpperCase() + name.substring(1);
    }
    return captilizedString;
}
Sidharth V
sumber
2

Untuk Kotlin, jika Anda ingin memastikan bahwa formatnya adalah "Aaaaaaaaa", Anda dapat menggunakan:

myString.toLowerCase(Locale.getDefault()).capitalize()
VinceMedi
sumber
1

Harap buat TextView kustom dan gunakan:

public class CustomTextView extends TextView {

    public CapitalizedTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void setText(CharSequence text, BufferType type) {
        if (text.length() > 0) {
            text = String.valueOf(text.charAt(0)).toUpperCase() + text.subSequence(1, text.length());
        }
        super.setText(text, type);
    }
}
Shrini Jaiswal
sumber
bagaimana cara membuat CustomTextView ini muncul di Desain Aktivitas / Fragmen sebagai elemen UI seret dan lepas?
Kostanos
0

Di sini saya telah menulis artikel mendetail tentang topik tersebut, karena kami memiliki beberapa opsi, Kapitalisasi Huruf Pertama String di Android

Metode untuk Kapitalisasi Huruf Pertama String di Java

public static String capitalizeString(String str) {
        String retStr = str;
        try { // We can face index out of bound exception if the string is null
            retStr = str.substring(0, 1).toUpperCase() + str.substring(1);
        }catch (Exception e){}
        return retStr;
}

Metode untuk Memanfaatkan Huruf Pertama String di Kotlin

fun capitalizeString(str: String): String {
        var retStr = str
        try { // We can face index out of bound exception if the string is null
            retStr = str.substring(0, 1).toUpperCase() + str.substring(1)
        } catch (e: Exception) {
        }
        return retStr
}

Menggunakan Atribut XML

Atau Anda bisa menyetel atribut ini di TextView atau EditText di XML

android:inputType="textCapSentences"
Asad Ali Choudhry
sumber