2013-10-04 111 views
1

我有一個編輯文本,其允許用戶輸入6個字符,並將其在字符3和4之間的Android EDITTEXT限制輸入的字符

我想從手動輸入破折號或限制用戶自動添加一個破折號在編輯文本的任何其它特殊字符和我有這個下面做:

機器人:位=「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

使用2種不同的EditText,並把一個TextView與破折號2之間的 – njzk2

+0

,你也可以使用輸入過濾。 – njzk2

回答

0

當前的代碼也許當你更改允許的數字您添加破折號前,後改回他們這有助於。

2

添加keyListener

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 =新的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); 
    } 

}