Seien Sie vorsichtig, wenn Sie beide android:capitalize="sentences"und hinzufügen android:inputType="text", da letzterer Vorrang vor dem ersten zu haben scheint und die Eingabe nicht großgeschrieben wird.
Es gibt eine spezielle inputTypeMöglichkeit, den ersten Buchstaben automatisch groß zu schreiben:
Netter Tipp! Ich hatte beides und es funktionierte wie erwartet auf einem Nexus One und einem Galaxy Nexus. Auf einem HTC Sense-Gerät wurden die Wörter jedoch nicht großgeschrieben. android: inputType war der Trick.
BoD
10
Wort der Warnung: Da in meinem Fall das Feld der Name einer Person sein sollte, habe ich android gesetzt: inputType = "textPersonName". Dies funktionierte nicht wie erwartet: Ich musste android: inputType = "textCapWords" verwenden, um jedes Wort des Namens groß zu schreiben.
Jeff G
2
android: capitalize = "Sätze" sollte dieses Tag nicht verwenden, da es veraltet ist
PionierBhawna
Was ist, wenn android: inputType = "textMultiLine"?
KRP
12
Dann verwenden Sieandroid:inputType="textMultiLine|textCapSentences"
4mnes7y
23
Die Optionen für Android: Großschreibung sind
android:inputType="none", which won't automatically capitalize anything.
android:inputType="sentences", Which will capitalize the first word of each sentence.
android:inputType="words", Which Will Capitalize The First Letter Of Every Word.
android:inputType="characters", WHICH WILL CAPITALIZE EVERY CHARACTER.
Anscheinend wurde es auf inputTypestatt geändertcapitalize
Während dieses Code-Snippet die Frage lösen kann, hilft eine Erklärung wirklich dabei, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage in Zukunft für Leser beantworten und diese Personen möglicherweise die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch, Ihren Code nicht mit erklärenden Kommentaren zu überfüllen. Dies verringert die Lesbarkeit sowohl des Codes als auch der Erklärungen!
Ashish Ahuja
1
Falls Sie auf den nervigen Fall gestoßen sind, Android zu setzen: inputType = textCapSentences und dann mit einzeiligem EditText zu enden, hier ist die Lösung:
Antworten:
Seien Sie vorsichtig, wenn Sie beide
android:capitalize="sentences"
und hinzufügenandroid:inputType="text"
, da letzterer Vorrang vor dem ersten zu haben scheint und die Eingabe nicht großgeschrieben wird.Es gibt eine spezielle
inputType
Möglichkeit, den ersten Buchstaben automatisch groß zu schreiben:android:inputType="textCapSentences"
Siehe http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType
quelle
android:inputType="textMultiLine|textCapSentences"
Die Optionen für Android: Großschreibung sind
android:inputType="none", which won't automatically capitalize anything. android:inputType="sentences", Which will capitalize the first word of each sentence. android:inputType="words", Which Will Capitalize The First Letter Of Every Word. android:inputType="characters", WHICH WILL CAPITALIZE EVERY CHARACTER.
Anscheinend wurde es auf
inputType
statt geändertcapitalize
quelle
Verwenden
android:inputType="textPersonName|textCapWords"
Da nur die Verwendung
"textPersonName"
nicht ausreicht, werden die Anfangsbuchstaben des Namens großgeschrieben.Ähnliches gilt für Postanschriften:
android:inputType="textPostalAddress|textCapSentences"
quelle
Fügen Sie dies in Ihre
XML
android:inputType="textCapWords"
android:inputType="textCapSentences"
wird für Sätze arbeiten. Ich musste jedoch jedes Wort in einem vollständigen Namensfeld groß schreiben.quelle
Versuchen Sie es so,
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
oder
android:inputType="textCapSentences"
funktioniert nur, wenn die automatische Großschreibung Ihrer Gerätetastatur aktiviert ist.quelle
Fügen Sie in der Layout-XML hinzu
android:inputType=textCapSentences
quelle
Sie haben das Wort "Erzwingen" verwendet. Also versuch das mal. Übergeben Sie einfach Ihren Edittext als Argument.
public static void setCapitalizeTextWatcher(final EditText editText) { final TextWatcher textWatcher = new TextWatcher() { int mStart = 0; @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { mStart = start + count; } @Override public void afterTextChanged(Editable s) { String input = s.toString(); String capitalizedText; if (input.length() < 1) capitalizedText = input; else capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1); if (!capitalizedText.equals(editText.getText().toString())) { editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { editText.setSelection(mStart); editText.removeTextChangedListener(this); } }); editText.setText(capitalizedText); } } }; editText.addTextChangedListener(textWatcher); }
quelle
Fügen Sie in der Layout-XML hinzu
android:capitalize="sentences"
quelle
Im Falle eines Passworts, das in Großbuchstaben beginnt, ist dies:
android:inputType="textPassword|textCapSentences"
quelle
Fügen Sie dies in Ihren Edittext (xml) ein:
android:capitalize="sentences"
quelle
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
quelle
Falls Sie auf den nervigen Fall gestoßen sind, Android zu setzen: inputType = textCapSentences und dann mit einzeiligem EditText zu enden, hier ist die Lösung:
android:inputType="textCapSentences|textMultiLine"
quelle