2013-10-04 3 views
1

내가 사용자가 6 개 문자를 입력 할 수있는 텍스트를 편집을하고 자동으로 내가 수동으로 대시를 입력하거나에서 사용자를 제한 할 안드로이드 제한 글고 문자

3 자 사이 4에 대시를 추가 입력 다른 특별한 편집 텍스트에 문자와 나는이 아래했을 :

안드로이드 : 숫자 = "abcdefghijklmnopqrstuvwxyz1234567890"

이 작동하지만 난 수동 textchange 리스너를 통해 대시를 추가 할 때, 그것은 물론 나던의 추가합니다.

안드로이드 : 자리 = "abcdefghijklmnopqrstuvwxyz1234567890-"

물론 사용자가 이제 대시를 입력 할 수 있습니다

그래서 나는 위의 제한 사항에 대한 대시를 추가!

사용자가 프로그래밍 방식으로 editText에 추가 할 수 있도록 허용하면서 어떻게 대시를 입력하지 못하도록 제한 할 수 있습니까? 당신이 대시를 추가하기 전에 허용 된 숫자를 변경하고 다시 후에 변경할 때 텍스트 변경 리스너

@Override 
public void onTextChanged(CharSequence text, int start, int before, 
     int count) { 

    // add dash when user enters 4th character 
    if (text.length() == 4 && text.length() > before) { 
     text = (text.subSequence(0, 3) + "-" + text.charAt(count - 1)); 
     int pos = text.length(); 
     editText.setText(text); 
     editText.setSelection(pos); 

    } else if (text.length() == 4 && text.length() < before) { 
     // delete dash when user presses back 
     editText.setText(text.subSequence(0, 3)); 

     editText.setSelection(text.length() - 1); 
    } 

} 
+0

사용이 다른 글고, 그리고 당신은 또한 inputfilter을 사용할 수 있습니다 – njzk2

+0

2 사이에있는 대시와 텍스트 뷰를 넣어. – njzk2

답변

0

현재 코드는 아마 도움이됩니다.

2

edtxt.setKeyListener(new AlphaKeyListner());

public class AlphaKeyListner extends NumberKeyListener 
{ 
    @Override 
    protected char[] getAcceptedChars() 
    {  
     return new char [] { 
          'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 
          'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 
          'u', 'v', 'w', 'x', 'y', 'z', 
          'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 
          'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 
          'U', 'V', 'W', 'X', 'Y', 'Z', 
           '1','2','3','4','5','6','7','8','9','0'}; 
    } 

    @Override 
    public void clearMetaKeyState(View view, Editable content, int states) 
    { 

    } 

    @Override 
    public int getInputType() 
    { 
     return InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD; 
    } 
} 
1

의 StringBuilder sb의 keyListener

= 새의 StringBuilder 추가();

@Override 
public void onTextChanged(CharSequence text, int start, int before, 
     int count) { 

    // add dash when user enters 4th character 
    if (sb.length() == 3) { 
     sb.append("-"); 
     sb.append(text) 
     editText.setText(sb.toString()); 
     editText.setSelection(pos); 

    } else{ 
     sb.append(text) 
     editText.setText(sb.toString()); 
     editText.setSelection(pos); 
    } 

}