web-dev-qa-db-ja.com

Android EditText内のすべての文字を大文字にする方法は?

私は私がこのように作るeditTextsの配列を持っています:

        inputs[i] = new EditText(this);
        inputs[i].setWidth(376);
        inputs[i].setInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
        tFields.addView(inputs[i]);

すべてのキャラクターを大文字にしてほしい。現在、最初の単語の最初の文字は小文字で、その後のすべての文字は大文字です。ユーザーが行った後にユーザーが入力したものを取得して大文字に変換できますが、それは実際の目的ではありません。これらのフィールドを希望どおりに動作させる方法はありますか?

19
clavio

「クラス」テキストからのものであることも伝える必要があります。

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には定数があり、値をコピーする代わりにそれらを使用して、最終的にはコードを壊す危険があります。)

20
tiktak

これにより、書き込み時にすべての文字が大文字になります。

edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});

元の答え ここ

13
jzeferino

String.toUpperCase()メソッドを使用するだけです。

例:

String str = "blablabla";
editText.setText(str.toUpperCase()); // it will give : BLABLABLA

編集:

この属性をEditText xmlのlayoutタグに追加します。

 Android:textAllCaps="true"

または:

ユーザーが入力するものをすべて大文字にしたい場合は、TextWatcherを実装し、EditTextaddTextChangedListenerを使用して追加し、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) {
}

};
5
Houcine

あなたはこれを試すことができます:

Android:inputType="textCapCharacters"

それは私のために働いた。 =)

4
Douglas Santos

私はこの質問が少し古いことを知っていますが、ここではさまざまな方法でそれを行う方法を説明します:

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);
3
Ricardo

各文の最初の単語を大文字にするには:

Android:inputType="textCapSentences"

すべての単語の最初の文字を大文字にするには:

Android:inputType="textCapWords"

すべてのキャラクターの使用を大文字にするには:

Android:inputType="textCapCharacters"

1
indrajeet jyoti

今日、その

Android:inputType="textCapCharacters"

1
Santanu

xmlで次の1行のコードを使用してみてください。

Android:capitalize="sentences"
0
Pihu

何らかの理由で、デバイスで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 });
0
med116

これはうまくいくでしょう

    inputs[i] = new EditText(this);
    inputs[i].setWidth(376);
    inputs[i].setInputType(0x00001001);
    tFields.addView(inputs[i]);

0x00001001は "textCapCharacters定数に対応します。

0
Robin Chander