私は私がこのように作るeditTextsの配列を持っています:
inputs[i] = new EditText(this);
inputs[i].setWidth(376);
inputs[i].setInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
tFields.addView(inputs[i]);
すべてのキャラクターを大文字にしてほしい。現在、最初の単語の最初の文字は小文字で、その後のすべての文字は大文字です。ユーザーが行った後にユーザーが入力したものを取得して大文字に変換できますが、それは実際の目的ではありません。これらのフィールドを希望どおりに動作させる方法はありますか?
「クラス」テキストからのものであることも伝える必要があります。
inputs[i] = new EditText(this);
inputs[i].setWidth(376);
inputs[i].setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
tFields.addView(inputs[i]);
入力タイプ は ビットマスク です。 |を置くことでフラグを組み合わせることができます(パイプ)文字は、OR論理関数を表しますが、このようなビットマスクで使用される場合、「このフラグとそのほかのフラグ」を意味しますが)。
(この答えはロビンと同じですが、「マジックナンバー」がないため、コードに入れることができる最悪のものの1つです。Android APIには定数があり、値をコピーする代わりにそれらを使用して、最終的にはコードを壊す危険があります。)
これにより、書き込み時にすべての文字が大文字になります。
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
元の答え ここ 。
String.toUpperCase()
メソッドを使用するだけです。
例:
String str = "blablabla";
editText.setText(str.toUpperCase()); // it will give : BLABLABLA
編集:
この属性をEditText
xmlのlayout
タグに追加します。
Android:textAllCaps="true"
または:
ユーザーが入力するものをすべて大文字にしたい場合は、TextWatcher
を実装し、EditText
addTextChangedListener
を使用して追加し、onTextChange
メソッドでユーザー入力を大文字で同じテキストに置き換えます。
editText.addTextChangedListener(upperCaseTextWatcher);
final TextWatcher upperCaseTextWatcher = new TextWatcher() {
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
editText.setText(editText.getText().toString().toUpperCase());
editText.setSelection(editText.getText().toString().length());
}
public void afterTextChanged(Editable editable) {
}
};
あなたはこれを試すことができます:
Android:inputType="textCapCharacters"
それは私のために働いた。 =)
私はこの質問が少し古いことを知っていますが、ここではさまざまな方法でそれを行う方法を説明します:
XMLでのUpperCaseの適用
以下をEditText XMLに追加します。
Android:textAllCaps="true"
JavaのEditTextへの唯一のフィルターとしてのUpperCaseの適用
ここでは、UpperCaseフィルターをEditTextの唯一のフィルターとして設定しています。このメソッドは、以前に追加されたすべてのフィルターを削除することに注意してください。
editText.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
JavaでEditTextの既存のフィルターにUpperCaseを追加
EditTextの既に適用されているフィルターを維持するには、たとえば、inputType、maxLengthなどを適用します。適用されたフィルターを取得し、UpperCaseフィルターをそれらのフィルターに追加して、EditTextに戻す必要があります。以下に例を示します。
InputFilter[] editFilters = editText.getFilters();
InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
newFilters[editFilters.length] = new InputFilter.AllCaps();
editText.setFilters(newFilters);
各文の最初の単語を大文字にするには:
Android:inputType="textCapSentences"
すべての単語の最初の文字を大文字にするには:
Android:inputType="textCapWords"
すべてのキャラクターの使用を大文字にするには:
Android:inputType="textCapCharacters"
今日、その
Android:inputType="textCapCharacters"
xmlで次の1行のコードを使用してみてください。
Android:capitalize="sentences"
何らかの理由で、デバイスでxmlを追加できませんでした。
次のように、テキストフィルターが大文字で機能することがわかりました
EditText editText = (EditText) findViewById(R.id.editTextId);
InputFilter toUpperCaseFilter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = start; i < end; i++) {
Character character = source.charAt(i);
character = Character.toUpperCase(character); // THIS IS UPPER CASING
stringBuilder.append(character);
}
return stringBuilder.toString();
}
};
editText.setFilters(new InputFilter[] { toUpperCaseFilter });
これはうまくいくでしょう
inputs[i] = new EditText(this);
inputs[i].setWidth(376);
inputs[i].setInputType(0x00001001);
tFields.addView(inputs[i]);
0x00001001は "textCapCharacters
定数に対応します。