私はこの質問が何度か尋ねられたことを知っていますが、私の場合はどれもうまくいきませんでした。
次のリンクで同じ種類の質問と回答がいくつか見つかりましたが、まったく機能しませんでした。
レイアウトファイルで、EditTextを次のように定義しました。
<EditText
Android:id="@+id/test_editText"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:layout_marginLeft="16dp"
Android:layout_marginTop="90dp"
Android:inputType="textCapWords"
Android:ems="10" >
また、onCreate
メソッドのActivityクラスに、次のコードを追加しました。
EditText testEditText = (EditText) findViewById(R.id.test_editText);
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
誰かが同じ問題を経験して解決した場合、私の場合に私が間違ったことを聞きたいと思います。ありがとう。
編集...
上で説明した手順に従うと、これを実行できません(ユーザーが入力している間、各単語の最初の文字を自動的に大文字にします)。
私のコードによると、ユーザーが入力すると、すべての単語(最初の単語を含む)の最初の文字が小文字で表示されます。
Android:inputType="textCapWords"
私のために働く
私はあなたが質問で持っているのと同じxmlコードを使用しました:
<EditText
Android:id="@+id/test_editText"
Android:layout_width="wrap_content"
Android:layout_height="50dp"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:layout_marginLeft="16dp"
Android:layout_marginTop="90dp"
Android:ems="10"
Android:inputType="textCapWords" >
アクティビティのinputType
属性をオーバーライドしているかどうかを確認してください。
アクティビティでは何も変更せずに試してください。
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
or Android:inputType="textCapSentences"
デバイスのキーボードの自動大文字設定が有効になっている場合にのみ機能します。
これが私がしたことです。 Android:inputType="textCapWords"
私にとってもうまくいきません。
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) {
//Use WordUtils.capitalizeFully if you only want the first letter of each Word to be capitalized
String capitalizedText = WordUtils.capitalize(editText.getText().toString());
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);
}
以前は_Android:capitalize="words"
_でしたが、現在は非推奨になっています。推奨される代替手段は、_Android:inputType="textCapWords"
_を使用することです。
これは、デバイスのキーボードの自動大文字設定が有効になっている場合にのみ機能することに注意してください。
これをプログラムで行うには、次の方法を使用します。
setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
エミュレーターまたはAndroidデバイスを試していますか?これはエミュレーターAndroid:inputType = "textCapWords"で機能します
このコードをEditTextに追加するだけですAndroid:capitalize="words"
それは機能する必要があります。
すべてのWordの使用の最初の文字を大文字にするには
Android:inputType = "textCapWords"出力:
[〜#〜] t [〜#〜]彼[〜#〜] i [〜#〜] s [〜#〜] s [〜 #〜] imple [〜#〜] t [〜#〜] ext。
すべての文の最初の文字を大文字にするには、
Android:inputType = "textCapSentences"出力:
[〜#〜] t [〜#〜]彼は最初のステートメントです。 [〜#〜] t [〜#〜]彼は2番目のステートメントです。
すべての文字を大文字にするには
Android:inputType = "textCapCharacters"
出力:THIS IS SIMPLE TEXT
注:出力では、回答のフォーマットにのみ使用される太字。上記のプロパティは、これらの大文字化を強制しません。ユーザーは小文字を入力できます。
Android:inputType = "textPersonName"を試しましたか
android:inputType = "textCapSentences"で試してみるべきですか?