2011-01-26 23 views
291

私はちょっと個人的なToDoリストアプリを開発しています。これまでのところすべてがうまくいきました。私が把握したいと思う1つの小さな奇抜がある。私が新しい項目を追加するたびに、EditTextビューが内部に表示されたダイアログが表示されます。 EditTextビューを選択すると、キーボードが表示され、テキストを入力する必要があります。ほとんどのアプリケーションでは、シフトキーが最初の文字のために保持されているように見えますが、これは私の見解ではありません。簡単な修正方法が必要ですが、繰り返し参照を検索して見つけられません。私は、アダプタによって読み込まれた参照のxml属性がなければならないと思っていますが、それは何かを見つけることができません。EditTextの最初の文字大文字

答えて

680

静的(レイアウトXMLファイル内):EditTextandroid:inputType="textCapSentences"を設定します。

プログラマチック:InputTypeEditTextInputType.TYPE_CLASS_TEXTを含める必要があります。

EditText editor = new EditText(this); 
editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 

は、すべての文の最初の文字の大文字小文字を要求するために、テキストとそのバリエーションと組み合わせることができます。

- Google Docs

+4

testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS); またはandroid:inputType = "textCapSentences"は、デバイスキーボードの自動大文字化設定が有効な場合にのみ機能します。 – Lakshmanan

+5

なぜこれを有効にすると、私の 'android:lines =" 7 "'はもはや7行を表示しなくなります。(デフォルトは1行に戻ります) –

+1

estEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS); orroid:inputType = "textCapSentences"は、デバイスキーボードの自動大文字化設定が有効な場合にのみ機能します。 **これの代わりに、プログラム的には何がありますか?** – Swift

55

ちょうどあなたのEditText要素にandroid:inputType="textCapWords"を使用しています。例えば

​​3210

参考のために、以下のリンクを参照してください:お使いのデバイスのキーボードオートが有効に設定大文字場合 http://developer.android.com/reference/android/widget/TextView.html#attr_android%3ainputType

+0

コードを太字にする代わりに、コードにマークを付けることをお勧めします。 –

+12

この回答はOPの質問にはあまり役立ちません。これにより、入力テキストの最初の文字(文と見なされます)ではなく、各** word **の最初の文字が大文字になります。これはおそらく他の人に役立つかもしれませんが、正解は受け入れられた答えです。 –

+0

編集テキストフィールドを1行にする解決策 – Shivang

24
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS); 

またはandroid:inputType="textCapSentences"のみ動作します。

+0

編集テキストフィールドを1行にする解決策 – Shivang

14

同じ問題が発生しました。私が見つけたものを共有しました。あなたと他の人を助けるかもしれません...

あなたのレイアウトでこれを試してください。EditTextの下の行を追加してください。

android:inputType="textCapWords|textCapSentences" 

私に正常に動作します..それはあなたにも作品を願って...

0

このコードを試してみてください、それはすべての単語の最初の文字を大文字にします。

- edt_text.addTextChangedListener(ウォッチャ)のEditTextビューの

をaddTextChangedListenerを設定します。

- TextWatcher

TextWatcher watcher = 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) { 
     String input = s.toString(); 
     String capitalizedText; 
     if (input.length() < 1) 
      capitalizedText = input; 
     else if (input.length() > 1 && input.contains(" ")) { 
      String fstr = input.substring(0, input.lastIndexOf(" ") + 1); 
      if (fstr.length() == input.length()) { 
       capitalizedText = fstr; 
      } else { 
       String sstr = input.substring(input.lastIndexOf(" ") + 1); 
       sstr = sstr.substring(0, 1).toUpperCase() + sstr.substring(1); 
       capitalizedText = fstr + sstr; 
      } 
     } else 
      capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1); 

     if (!capitalizedText.equals(edt_text.getText().toString())) { 
      edt_text.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) { 
        edt_text.setSelection(mStart); 
        edt_text.removeTextChangedListener(this); 
       } 
      }); 
      edt_text.setText(capitalizedText); 
     } 
    } 
}; 
13

はXMLであなたのEditTextに次の行を適用します。

android:inputType="textCapSentences|textMultiLine" 

また、複数行のサポートを可能にします。

0

以前はandroid:capitalize="words"でしたが、現在は廃止予定です。推奨される代替方法が使用されますandroid:inputType="textCapWords"

これは、デバイスキーボードの自動大文字の設定が有効な場合にのみ有効です。 、プログラム的にこれを行うには、次の方法を使用するには

:XMLでXMLならびにこのようなJAVAファイルに

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

1

セット入力タイプを、

android:inputType = "textMultiLine | textCapSentences"

また、

edittext.setRawInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 

複数行とJAVAファイルにできるようになりますが、キーボードの自動大文字設定がを有効になっていることを確認してください。

関連する問題