Bir Android Uygulamasında Metin Görünümü'ndeki metnin ilk harfinin büyük harfle yazılması


94

TextInput'tan da bahsetmiyorum. Demek istediğim, bir TextView'da statik metne sahip olduğunuzda (bir Veritabanı çağrısından kullanıcı tarafından girilen verilere (Büyük Harf ile yazılmayabilir) doldurulur), büyük harfle yazıldıklarından nasıl emin olabilirim?

Teşekkürler!


2
Gelecek ziyaretçiler için ... Kotlin'de sadece "abcd" .capitalize ()) kullanın
Amit Tumkur

Yanıtlar:


186

Bunu standart java dize manipülasyonu yoluyla başarabilmeliyim, Android veya TextView'e özgü değil.

Gibi bir şey:

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

Bununla birlikte, bunu başarmanın muhtemelen milyonlarca yolu vardır. Dize belgelerine bakın .

KURGU diye ekledim.toLowerCase()


13
Bunun İngilizce için iyi bir çözüm olduğunu ancak yerelleştirme dostu olmadığını belirtmek isterim.
Billy Lazzaro

71

Aşağıdakiler TextView için geçerli değildir, ancak EditText ile çalışır; o zaman bile, setText () ile yüklenen metne değil, klavyeden girilen metne uygulanır. Daha spesifik olmak gerekirse, klavyedeki Büyük Harfleri açar ve kullanıcı bunu kendi isteğiyle geçersiz kılabilir.

android:inputType="textCapSentences"

veya

TV.sname.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

Bu, ilk harfi CAP olacaktır.

veya

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

tv.setText(StringUtils.capitalize(myString.toLowerCase().trim()));

80
Bu, TextView için değil, yalnızca EditText için geçerlidir; o zaman bile, setText () ile yüklenen metne değil, klavyeden girilen metne uygulanır. Daha spesifik olmak gerekirse, klavyedeki Büyük Harfleri açar ve kullanıcı bunu kendi isteğiyle geçersiz kılabilir.
Alex Cohn

30
StringBuilder sb = new StringBuilder(name);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));  
return sb.toString();

22

Kotlin için arayın

textview.text = string.capitalize()

3
Her kelimeyi büyük harfle yazacağını düşünmüştüm ama aslında sadece ilk kelime için çalışıyor.
Skoua

Bunu çok dilli uygulamada kullanıyorsanız, yerel ayarı geçmek daha iyi hale getirir.
Dharmendra Pratap Singh



2

Benim için hiçbiri çalışmıyor:

İşlev:

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();
}

Sonuç:

I / P brain O / P Beyin

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

I / P brain And health için O / P Brain And Health

I / P brain's Health için O / P Brain's Health

I / P brain's Health and leg için O / P Brain's Health And Leg

Umarım bu sana yardımcı olur.


2

Kabul edilen cevap iyidir, ancak bunu android'de bir textView'dan değer almak için kullanıyorsanız, dizenin boş olup olmadığını kontrol etmeniz iyi olur. Dize boşsa, bir istisna atar.

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

2

Kotlin için, formatın "Aaaaaaaaa" olduğundan emin olmak istiyorsanız şunu kullanabilirsiniz:

myString.toLowerCase(Locale.getDefault()).capitalize()

1

Lütfen özel bir TextView oluşturun ve kullanın:

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);
    }
}

Bu CustomTextView'un Etkinlik / Parça Tasarımında sürükle ve bırak kullanıcı arabirimi öğesi olarak görünmesini nasıl sağlayabilirim?
Kostanos

0

Burada konuyla ilgili ayrıntılı bir makale yazdım, çünkü birkaç seçeneğimiz var, Android'de Dizenin İlk Harfini Büyükleştir

Java'da Dizenin İlk Harfini Büyük Harf Yazma Yöntemi

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;
}

Kotlin'de Dizenin İlk Harfini Büyük Harfe Çevirme Yöntemi

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
}

XML Özniteliğini Kullanma

Veya bu niteliği TextView veya XML'de EditText'te ayarlayabilirsiniz.

android:inputType="textCapSentences"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.