首页
IT
登录
6mi
u
盘
搜
搜 索
IT
监听文本框的文字变化
监听文本框的文字变化
xiaoxiao
2026-08-24
5
public class MainActivity extends Activity {
private EditText editText;
private TextView tip;
private final int charMaxNum = 10; //
允许输入的字数
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
editText = (EditText) findViewById(R.id.main_et);
editText.addTextChangedListener(new EditChangedListener());
tip = (TextView) findViewById(R.id.main_tv);
tip.setText(0/+charMaxNum);
}
class EditChangedListener implements TextWatcher {
private CharSequence temp; //
监听前的文本
private int editStart; //
光标开始位置
private int editEnd; //
光标结束位置
//
输入文本之前的状态
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after) {
temp = s;
}
//
输入文字中的状态,
count
是一次性输入字符数
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// if (charMaxNum - s.length() <= 5) {
// tip.setText(
还能输入
+ (charMaxNum - s.length()) +
字符
);
// }
tip.setText((s.length()) + / + charMaxNum);
}
//
输入文字后的状态
@Override
public void afterTextChanged(Editable s) {
/**
得到光标开始和结束位置
,
超过最大数后记录刚超出的数字索引进行控制
*/
editStart = editText.getSelectionStart();
editEnd = editText.getSelectionEnd();
if (temp.length() > charMaxNum) {
// Toast.makeText(getApplicationContext(),
最多输入
10
个字符
, Toast.LENGTH_SHORT).show();
s.delete(editStart - 1, editEnd);
editText.setText(s);
editText.setSelection(s.length());
}
}
};
}
转载请注明原文地址: https://ju.6miu.com/read-1311498.html
最新回复
(
0
)