首先是edittext布局文件
<EditText
android:inputType="text"
android:imeOptions="actionDone"
android:id="@+id/ets"
android:layout_width="match_parent"
android:layout_height="match_parent" />
首先动态加上俩行代码,为了防止edittext输入不换行问题:
ets.setHorizontallyScrolling(false);
ets.setMaxLines(Integer.MAX_VALUE);
然后我们定义输入内容个数:
final int length = 40;
然后通过edittext输入监听:
ets.addTextChangedListener(new TextWatcher() {
private CharSequence temp;
private int editStart ;
private int editEnd ;
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int after, int count) {
temp = charSequence.toString().trim();
if(temp.length()>0) {
numBefore=temp.length();//已经输入的字符长度
numAfter=length-temp.length();
//最终显示的字符数
tv_times.setText((numBefore)+"");
if (temp.length() > length){
Toast.makeText(MainActivity.this, "你输入得字数超过限制", Toast.LENGTH_SHORT).show();
}
}else {
//最终显示的字符数
tv_times.setText("0");
}
}
@Override
public void afterTextChanged(Editable editable) {
try {
editStart = ets.getSelectionStart();//开始的字符位置
editEnd = ets.getSelectionEnd();//结束的字符位置
if (temp.length() >length) {
editable.delete(editStart-1, editEnd);//删除
int tempSelection = editStart;
ets.removeTextChangedListener(this);
ets.setText(editable);
ets.addTextChangedListener(this);
ets.setSelection(tempSelection);
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
ok,这样实现了我们想要得效果咯。