13

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

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

リンク1

リンク2

私のレイアウト ファイルでは、次のように 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" >

メソッドの Activity クラスにもonCreate、次のコードを追加しました。

    EditText testEditText = (EditText) findViewById(R.id.test_editText);
    testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS); 

誰かが同じ問題を経験して解決した場合、私のケースで何が間違っていたかを知りたいです。ありがとう。

編集...

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

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

4

10 に答える 10

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

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

于 2013-06-11T11:21:48.513 に答える
5

これが私がやったことです。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);
}
于 2014-12-03T06:59:03.480 に答える
1

以前android:capitalize="words"は でしたが、現在は廃止されています。推奨される代替手段は、android:inputType="textCapWords"

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

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

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

于 2017-06-27T06:12:05.013 に答える
0

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

于 2014-08-07T06:09:46.393 に答える
0

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

于 2013-06-11T11:04:42.243 に答える
0

このコードを EditTextandroid:capitalize="words"に追加するだけで機能します。

于 2015-08-24T11:47:30.563 に答える
0

android:inputType="textCapSentences" を試す必要がありますか?

于 2013-06-11T11:07:09.977 に答える
-1

あなたのレイアウトでこれを試してください...

android:inputType="textCapWords|textCapSentences"

私にはうまくいきます..あなたにもうまくいくことを願っています...

于 2014-10-15T07:35:44.603 に答える