2010-08-23 7 views

답변

1

첫째, 목표는 무엇입니까? 왜 대문자를 제한하고 싶습니까? 당신은 onTextChanged(CharSequence text, int start, int before, int after)를 무시하고 무엇을하려고 내가 생각할 수있는 유일한 방법은 사용자 입력의 유효성에 그들을 돌봐 당신이 대문자를 제한해야하는 경우 와 toLowerCase()

를 사용할 수 없습니다 그 안에 들어가기를 원해. 나는 그것을 테스트하지 않았지만 효과가있을 수 있습니다.

업데이트 : radek 언급 InputFilter. 그 해결책은 제 것보다 깨끗해 보입니다. 그러나 저는 그것들을 사용한 적이 없습니다.

입력 필터를 편집 가능 파일에 첨부하여 변경 사항을 적용 할 수 있습니다.

+0

그가하려는 일에 대한 inputFilter 또는 InputType (http://developer.android.com/reference/android/text/InputType.html)은 없습니다. – Macarse

+0

thats 좋은 생각 : D – UMAR

+0

내 답변을 선택해 주셔서 감사합니다.하지만 radek-k 's가 더 좋습니다. 어쨌든, 우리 모두 오늘 무언가를 배웠습니다. ^^ – Maragues

4

: InputFilter.AllCaps : 그것은의 안드로이드 소스를 기반으로

InputFilter smallFilter = new InputFilter() { 

    @Override 
    public CharSequence filter(CharSequence source, int start, int end, 
     Spanned dest, int dstart, int dend) { 
    for (int i = start; i < end; i++) { 
     if (Character.isUpperCase(source.charAt(i))) { 
     char[] v = new char[end - start]; 
     TextUtils.getChars(source, start, end, v, 0); 
     String s = new String(v).toLowerCase(); 

     if (source instanceof Spanned) { 
      SpannableString sp = new SpannableString(s); 
      TextUtils 
       .copySpansFrom((Spanned) source, start, end, null, sp, 0); 
      return sp; 
     } else { 
      return s; 
     } 
     } 
    } 
    return null; 
    } 
}; 

EditText vText = ...; 
vText.setFilters(new InputFilter[]{smallFilter}); 

. 테스트를 거쳐 작동합니다.

+2

그가 다른 방향으로 원한다고 생각합니다. 대문자가 아님 – Maragues

+0

둘 다 작동하지 않습니다. 위의 은 자동으로 꺼질 때마다 키보드를 설정하여 1 개의 작은 문자를 입력 할 수있게합니다. 이하에 오류가 있습니다. InputFilter.AllCaps를 확인할 수 없습니다. – UMAR

+0

추가 "가져 오기 android.text.InputFilter;" 패키지 선언 후. – plugmind

관련 문제