2012-02-22 4 views
3

나는 edittext를 가지고 있으며, 대문자로 edittext에 입력 한 모든 문자를 표시하려고합니다. 나는 이것을 사용했다 :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에 라인을 넣어 시도 문제가 해결되지 않으면 아무것도 다른

String text=editText.getText().toString(); 
editText.setText(text.toUpperCase()); 
작동하지 않는 경우 당신이 너무이 시도 할 수
+0

감사합니다. Hiral. 나는 이것을 시도 할 것이다. 흥미로운 것 같습니다. – 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 코드 – rizzz86

12

당신은 단지 안드로이드와 시도해야합니다 inputType 속성.

귀하의 요구 사항에 따라, 당신은 해킹의 android:inputType="textCapCharacters"

+0

을 작성해야합니다. Paresh. 하지만 자바 코드 – rizzz86

+1

@Bhuro를 통해 동적으로 처리해야하지만이 작업을 시도했지만 작동하지 않습니다. – kamil

+0

사용자가 'shift'키를 누르지 않고 소문자로 글자를 쓰지 못하게하는 것도 없습니다. –

-1

.. afterTextChanged 6,

동적으로 그 일을 위해 글고

1

의 onTextChangeListener이 코드를 추가

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() 
        });