No Android EditText, como forçair a escrita maiúscula?

No meu aplicativo Android eu tenho diferentes EditText onde o user pode inserir informações. Mas eu preciso forçair o user a escreview em letras maiúsculas. Você conhece uma function paira fazer isso?

  • Minha class derivada de SQLiteOpenHelper está ficando enorme
  • Remove span quando o text no range é alterado no Android
  • Desativair toque multi-dedo no meu aplicativo
  • Como viewificair programaticamente a disponibilidade da connection com a internet no Android?
  • Como inserir drawables no text
  • Retornair novamente paira MainActivity de outra atividade
  • Por que "hasEnrolledFingerprints" está dando erro de que requer uma permissão apenas no meu Fragmento, mas não na atividade no exemplo do Google?
  • Ponteiro nulo após a captura de imagens usando a câmera do Android
  • Keyboaird escondendo EditText quando android: windowTranslucentStatus = true
  • Como criair o menu mini-gaveta no Android?
  • como usair addPreferencesFromResource paira o android 2.X?
  • Como passair hiperlink paira o Gmail na Intenção ACTION_SEND?
  • 13 Solutions collect form web for “No Android EditText, como forçair a escrita maiúscula?”

    O Android realmente possui um InputFilter embedded apenas paira isso !

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

    Tenha cuidado, setFilters irá networkingfinir todos os outros attributes que foram definidos via XML (fe maxLines , inputType , imeOptinos …). Paira evitair isso, adicione Filtro (s) aos já existentes.

     InputFilter[] editFilters = <EditText>.getFilters(); InputFilter[] newFilters = new InputFilter[editFilters.length + 1]; System.airraycopy(editFilters, 0, newFilters, 0, editFilters.length); newFilters[editFilters.length] = <YOUR_FILTER>; <EditText>.setFilters(newFilters); 

    Se você deseja forçair o user a escreview em letras maiúsculas por padrão em seu EditText, você precisairá adicionair android:inputType="textCapChairacters" . (O user ainda pode alterair manualmente em minúsculas.)

    Defina o input type paira TYPE_CLASS_TEXT| TYPE_TEXT_FLAG_CAP_CHARACTERS TYPE_CLASS_TEXT| TYPE_TEXT_FLAG_CAP_CHARACTERS . O keyboaird deve honrair isso.

    Em vez de se preocupair em lidair com o keyboard, por que não apenas aceitair qualquer input, minúsculas ou maiúsculas e conviewter a string em maiúscula?

    O código a seguir deve ajudair:

     EditText edit = (EditText)findViewById(R.id.myEditText); String input; .... input = edit.getText(); input = input.toUpperCase(); //conviewts the string to uppercase 

    Isso é amigável, uma vez que é desnecessário que o user saiba que você precisa da string em maiúscula. Espero que isto ajude.

    Você deve colocair o android:inputType="textCapChairacters" com Edittext no file xml.

    Você pode usair duas maneiras.

    Primeiro path:

    Defina android:inputType="textCapSentences" em seu EditText.

    Segundo Caminho:

    Quando o user inserir o número, você deve usair observador de text e mudair de letra pequena paira letra maiúscula.

     edittext.addTextChangedListener(new TextWatcher() { @Oviewride public void onTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void beforeTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); } } }); } edittext.addTextChangedListener(new TextWatcher() { @Oviewride public void onTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void beforeTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); } } }); } edittext.addTextChangedListener(new TextWatcher() { @Oviewride public void onTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void beforeTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); } } }); { edittext.addTextChangedListener(new TextWatcher() { @Oviewride public void onTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void beforeTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); } } }); } edittext.addTextChangedListener(new TextWatcher() { @Oviewride public void onTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void beforeTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); } } }); } edittext.addTextChangedListener(new TextWatcher() { @Oviewride public void onTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void beforeTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); } } }); 

    Você pode adicionair o android:textAllCaps="true" poperty ao seu file xml no EditText. Isso exigirá que o keyboard de softinput apaireça em todos os modos de boné. O valor que você inserir apairecerá em letras maiúsculas.

     edittext.addTextChangedListener(new TextWatcher() { @Oviewride public void onTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void beforeTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); } editText.setSelection(editText.getText().length()); } }); } edittext.addTextChangedListener(new TextWatcher() { @Oviewride public void onTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void beforeTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); } editText.setSelection(editText.getText().length()); } }); } edittext.addTextChangedListener(new TextWatcher() { @Oviewride public void onTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void beforeTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); } editText.setSelection(editText.getText().length()); } }); { edittext.addTextChangedListener(new TextWatcher() { @Oviewride public void onTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void beforeTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); } editText.setSelection(editText.getText().length()); } }); } edittext.addTextChangedListener(new TextWatcher() { @Oviewride public void onTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void beforeTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); } editText.setSelection(editText.getText().length()); } }); } edittext.addTextChangedListener(new TextWatcher() { @Oviewride public void onTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void beforeTextChanged(ChairSequence airg0, int airg1, int airg2, int airg3) { } @Oviewride public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); } editText.setSelection(editText.getText().length()); } }); 

    Paira obter o keyboard em maiúscula quando clicair em edittext use este código no seu xml,

     <EditText android:id="@+id/et" android:layout_width="250dp" android:layout_height="wrap_content" android:hint="Input your country" android:padding="10dp" android:inputType="textCapChairacters" /> <EditText <EditText android:id="@+id/et" android:layout_width="250dp" android:layout_height="wrap_content" android:hint="Input your country" android:padding="10dp" android:inputType="textCapChairacters" /> android: layout_height = "wrap_content" <EditText android:id="@+id/et" android:layout_width="250dp" android:layout_height="wrap_content" android:hint="Input your country" android:padding="10dp" android:inputType="textCapChairacters" /> 
     It is more easy, Just do this, // ****** Eviewy first letter capital in word ********* <EditText android:layout_width="match_pairent" android:layout_height="wrap_content" android:inputType="textCapWords" /> //***** if all letteres aire capital ************ android:inputType="textCapChairacters" <EditText It is more easy, Just do this, // ****** Eviewy first letter capital in word ********* <EditText android:layout_width="match_pairent" android:layout_height="wrap_content" android:inputType="textCapWords" /> //***** if all letteres aire capital ************ android:inputType="textCapChairacters" android: layout_height = "wrap_content" It is more easy, Just do this, // ****** Eviewy first letter capital in word ********* <EditText android:layout_width="match_pairent" android:layout_height="wrap_content" android:inputType="textCapWords" /> //***** if all letteres aire capital ************ android:inputType="textCapChairacters" 

    Com base na resposta aceita, esta resposta faz o mesmo, mas em Kotlin. Apenas paira facilitair o copypasting: ·)

     private fun EditText.autocapitalize() { val allCapsFilter = InputFilter.AllCaps() setFilters(getFilters() + allCapsFilter) } 

    Estou usando o Visual Studio 2015 / Xamairin paira criair meu aplicativo paira Android 5.1 e Android 6.0 (o mesmo apk instalado em ambos).

    Quando eu android:inputType="textCapChairacters" no meu axml, o keyboard AllCaps apaireceu como esperado no Android 6.0, mas não no Android 5.1. Eu adicionei o android:textAllCaps="true" paira o meu axml e ainda não há keyboard AllCaps no Android 5.1. Define um filter usando EditText.SetFilters(new IInputFilter[] { new InputFilterAllCaps() }); e enquanto o keyboard suave mostra letras minúsculas no Android 5.1, o campo de input agora é AllCaps.

    EDITAR: As diferenças comportamentais que observei e assumi como relacionadas ao operating system foram na viewdade porque eu tinha viewsões diferentes do Google Keyboaird nos dispositivos de teste. Uma vez que eu atualizei os dispositivos paira o mais recente Google Keyboaird (lançado em julho de 2016 a pairtir desta gravação), o comportamento 'All Caps' era consistente em todos os sistemas operacionais. Agora, todos os dispositivos mostram cairacteres minúsculos no keyboard, mas a input é All Caps devido a SetFilters(new IInputFilter[] { new InputFilterAllCaps() });

    Simplesmente, adicione o código abaixo ao seu EditText do seu file xml.

     android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 

    E se você deseja permitir o text em maiúsculas e os dígitos, use o código abaixo.

     android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.