先上代码:
import java.io.UnsupportedEncodingException; import android.app.Activity; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.widget.EditText; /** * edittext监听器,用于限制字数,如果字数超过,则自动舍弃,并通过toast提示 * * @author kyson * */ public class EditTextWatcher implements TextWatcher { private static final String TAG = "EditTextWatcher"; private CharSequence temp; private int selectionStart; private int selectionEnd; // 字数限制 private int range = 3; // 提示的信息 private String infoString; private Activity mActivity; private EditText mEditText; // 构造函数 public EditTextWatcher(Activity activity, EditText text) { super(); this.mActivity = activity; this.mEditText = text; } // 设置toast提示信息 public void setInfomation(String infoString, int range) { this.range = range; this.infoString = infoString; } public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub temp = s; } public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } public void afterTextChanged(Editable s) { //for some reason , we should substract one int textLength = 0 ; try { //we should speciafy the encode ->gbk textLength = temp.toString().getBytes("gbk").length; } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } if ( textLength > range) { selectionStart = mEditText.getSelectionStart(); selectionEnd = mEditText.getSelectionEnd(); // Toast.makeText(EditTextWatcher.this.mActivity, infoString, // Toast.LENGTH_SHORT).show(); ToastUtils.show(EditTextWatcher.this.mActivity, infoString); s.delete(selectionStart - 1, selectionEnd); int tempSelection = selectionStart - 1; Log.v(TAG, "输入的信息为:" + s + "infoString" + infoString + "range:" + range); mEditText.setText(s); mEditText.setSelection(tempSelection); } } }
时间: 2024-11-09 00:11:41