class
EditChangedListener
implements
TextWatcher {
private
CharSequence temp;
private
int
editStart;
private
int
editEnd;
private
final
int
charMaxNum =
10
;
@Override
public
void
beforeTextChanged(CharSequence s,
int
start,
int
count,
int
after) {
if
(DEBUG)
Log.i(TAG,
"输入文本之前的状态"
);
temp = s;
}
@Override
public
void
onTextChanged(CharSequence s,
int
start,
int
before,
int
count) {
if
(DEBUG)
Log.i(TAG,
"输入文字中的状态,count是一次性输入字符数"
);
mTvAvailableCharNum.setText(
"还能输入"
+ (charMaxNum - s.length()) +
"字符"
);
}
@Override
public
void
afterTextChanged(Editable s) {
if
(DEBUG)
Log.i(TAG,
"输入文字后的状态"
);
/** 得到光标开始和结束位置 ,超过最大数后记录刚超出的数字索引进行控制 */
editStart = mEditTextMsg.getSelectionStart();
editEnd = mEditTextMsg.getSelectionEnd();
if
(temp.length() > charMaxNum) {
Toast.makeText(getApplicationContext(),
"你输入的字数已经超过了限制!"
, Toast.LENGTH_LONG).show();
s.delete(editStart -
1
, editEnd);
int
tempSelection = editStart;
mEditTextMsg.setText(s);
mEditTextMsg.setSelection(tempSelection);
}
}
};