web-dev-qa-db-ja.com

Android EditText( "Textbox"):ユーザーが入力しているときに各単語の最初の文字を自動大文字化

私はこの質問が何度か尋ねられたことを知っていますが、私の場合はどれもうまくいきませんでした。

次のリンクで同じ種類の質問と回答がいくつか見つかりましたが、まったく機能しませんでした。

LINK1

LINK2

レイアウトファイルで、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); 

誰かが同じ問題を経験して解決した場合、私の場合に私が間違ったことを聞きたいと思います。ありがとう。

編集...

上で説明した手順に従うと、これを実行できません(ユーザーが入力している間、各単語の最初の文字を自動的に大文字にします)。

私のコードによると、ユーザーが入力すると、すべての単語(最初の単語を含む)の最初の文字が小文字で表示されます。

13
JibW
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属性をオーバーライドしているかどうかを確認してください。

アクティビティでは何も変更せずに試してください。

13
Archie.bpgc
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);   

or Android:inputType="textCapSentences" 

デバイスのキーボードの自動大文字設定が有効になっている場合にのみ機能します。

9
Lakshmanan

これが私がしたことです。 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);
}
5
Arst

以前は_Android:capitalize="words"_でしたが、現在は非推奨になっています。推奨される代替手段は、_Android:inputType="textCapWords"_を使用することです。

これは、デバイスのキーボードの自動大文字設定が有効になっている場合にのみ機能することに注意してください。

これをプログラムで行うには、次の方法を使用します。

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

1
Mahendra Liya

エミュレーターまたはAndroidデバイスを試していますか?これはエミュレーターAndroid:inputType = "textCapWords"で機能します

0
Wasif Ali

このコードをEditTextに追加するだけですAndroid:capitalize="words"それは機能する必要があります。

0
Anant Shah
  1. すべてのWordの使用の最初の文字を大文字にするには

    Android:inputType = "textCapWords"出力:

    [〜#〜] t [〜#〜][〜#〜] i [〜#〜] s [〜#〜] s [〜 #〜] imple [〜#〜] t [〜#〜] ext。

  2. すべての文の最初の文字を大文字にするには、

    Android:inputType = "textCapSentences"出力:

    [〜#〜] t [〜#〜]彼は最初のステートメントです。 [〜#〜] t [〜#〜]彼は2番目のステートメントです。

  3. すべての文字を大文字にするには

    Android:inputType = "textCapCharacters"

出力:THIS IS SIMPLE TEXT

注:出力では、回答のフォーマットにのみ使用される太字。上記のプロパティは、これらの大文字化を強制しません。ユーザーは小文字を入力できます。

0
Suraj Vaishnav

Android:inputType = "textPersonName"を試しましたか

0
Prachi

android:inputType = "textCapSentences"で試してみるべきですか?

0
chaitanya