<span style="font-size:24px;"> int inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
//正负开锁输入框
et_unlockType = (EditText)findViewById(R.id.et_unlockN);
et_unlockType.setInputType(inputType);
et_unlockType.addTextChangedListener(new EditChangedListener(this));
</span>
<span style="font-size:24px;"> <span style="font-size:18px;">class EditChangedListener implements TextWatcher{
private Context mContext;
private CharSequence temp; //监听前的文本
private int editStart; //光标开始的位置
private int editEnd; //光标结束的位置
private final int charMaxNum = 2;
private boolean DEBUG = true;
private String TAG = "输出: ";
public EditChangedListener(Context context)
{
mContext = context;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
if(DEBUG)
Log.i(TAG,"输入文本之前的状态");
temp = s;
if (radioButton != null) {
if (radioButton.isChecked()) {
radioButton.setChecked(false);
}
}
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
if(DEBUG)
Log.i(TAG,"输入文字中的状态,count是一次性输入字符数");
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if(DEBUG)
Log.i(TAG, "输入文字后的状态");
/**得到光标开始和结束位置 ,超过最大数后记录刚超出的数字索引进行控制**/
editStart = et_unlockType.getSelectionStart();
editEnd = et_unlockType.getSelectionEnd();
if (temp.length() > charMaxNum) {
Toast.makeText(mContext, "你输入的字数已经超过限制!", Toast.LENGTH_SHORT).show();
s.delete(editStart -1 , editEnd);
int tempSelection = editStart;
et_unlockType.setText(s);
textView.setText("选中开锁方式:正负"+s+"开锁");
et_unlockType.setSelection(tempSelection);
}
}
}
}</span></span>