2013-10-04 117 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); 
    } 

}