我的问题是,如何限制编辑文本中的特定字符?
例如,我想使用最大字符数限制#个字符。编辑文字3次。
我该怎么做?请提供任何建议或代码示例。
谢谢。
答案 0 :(得分:0)
使用此
yourEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(count>3){
yourEditText.setEnabled(false);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
答案 1 :(得分:0)
尝试一下
int currHash=0;
edtText.addTextChangedListener(new TextWatcher() {
CharSequence previous;
public void afterTextChanged(Editable source) {
if(source.toString().contains("#") && currHash=2){
source.clear();
source.append(previous.toString());
}
else
if(source.toString().contains("#"))
currHash++;
}
public void beforeTextChanged(CharSequence source, int start, int count, int after) {
previous = source;
}
public void onTextChanged(CharSequence source, int start, int before, int count) {}
});
答案 2 :(得分:0)
我找到了这样的解决方案。
etDesc.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
hastagCount = s.toString().length() - s.toString().replace("#", "").length();
if(hastagCount<=3){
previousDesc = s.toString();
}
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
hastagCount = s.toString().length() - s.toString().replace("#", "").length();
if(hastagCount>3){
s.clear();
s.append(previousDesc);
int pos = etDesc.getText().length();
etDesc.setSelection(pos);
etDesc.setFocusable(true);
}
}
});