2012-02-22 2 views
3

У меня есть edittext, и я хочу, чтобы любой символ, который я печатаю в edittext show в Capital letter. Я использовал это:Android EditText Персонажи капитала

edittext.setInputType (InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);

Но он не работает. Я хочу сделать это динамически. Есть идеи.

+0

Вот решение, что лучше: http://stackoverflow.com/a/25571410/922354 –

ответ

8

Тип хака, Попробуйте это:

edittext.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {    

    } 
     @Override 
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
        int arg3) {    
    } 
    @Override 
    public void afterTextChanged(Editable arg0) { 
      String s=arg0.toString(); 
     if(!s.equals(s.toUpperCase())) 
     { 
     s=s.toUpperCase(); 
     edittext.setText(s); 
     edittext.setSelection(s.length()); 
     } 
    } 
});  

Это должно работать (не хватает времени, чтобы проверить) попытаться положить линии в OnTextChanged в afterTextChanged если это не работает ..

+0

Спасибо Хираль. Я попробую это. Кажется интересным. – rizzz86

+0

Ну, это возвращает StackOverflowError. И это связано с установкой «edittext.setText (s)»; снова вызовет onTextChangeListener. – rizzz86

+0

Затем попробуйте поместить его в afterTextChanged и удалить из onTextChanged! – Hiral

1

Попробуйте это в EditText андроида: капитализировать = "символы"

+0

этот метод устарел – Kalanamith

1
<EditText 
     android:id="@+id/editText" 
     android:layout_width="fill_parent" 
     android:layout_height="30dp" 
     android:capitalize="characters"/> 
+0

Это устарело: вместо этого используйте inputType. [enum] –

+0

Мне нужно это сделать. java code – rizzz86

12

Вам просто нужно попробовать с андроида: inputType атрибута.

По вашему требованию, вы можете включить android:inputType="textCapCharacters"

+0

Спасибо, Paresh. Но я должен сделать это динамически с помощью java-кода – rizzz86

+1

@Bhuro Я пробовал это, но он не работает. – kamil

+0

ничто не мешает пользователю нажать «shift» и написать букву в нижнем регистре. –

-1

вы можете попробовать это тоже, если ничего не работает

String text=editText.getText().toString(); 
editText.setText(text.toUpperCase()); 

добавить этот код в onTextChangeListener из EditText

1

Для делать это динамически:

edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS); 
1
EditText txt = FindViewById<EditText>(Resource.Id.textView1); 
    txt.SetFilters(new Android.Text.IInputFilter[] { 
         new Android.Text.InputFilterAllCaps() 
        });