【发布时间】:2014-06-10 17:11:45
【问题描述】:
我需要输入由破折号分隔的 9 个大写字母,例如 AAA-AAA-AAA 和 此输入必须在输入时进行格式化。
提前致谢。
【问题讨论】:
-
这篇文章可能对你有所帮助stackoverflow.com/questions/5947674/…
标签: android android-edittext android-input-filter
我需要输入由破折号分隔的 9 个大写字母,例如 AAA-AAA-AAA 和 此输入必须在输入时进行格式化。
提前致谢。
【问题讨论】:
标签: android android-edittext android-input-filter
我找到了使用 TextWatcher 的解决方案。我正在使用
android:inputType="textCapCharacters|textNoSuggestions"
用于 EditText 输入类型,以便仅接收大写字母。
txtCode = (EditText) findViewById(R.id.txtCode);
txtCode.addTextChangedListener( new TextWatcher() {
boolean isEdiging;
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) { }
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void afterTextChanged(Editable s) {
if(isEdiging) return;
isEdiging = true;
// removing old dashes
StringBuilder sb = new StringBuilder();
sb.append(s.toString().replace("-", ""));
if (sb.length()> 3)
sb.insert(3, "-");
if (sb.length()> 7)
sb.insert(7, "-");
if(sb.length()> 11)
sb.delete(11, sb.length());
s.replace(0, s.length(), sb.toString());
isEdiging = false;
}
});
【讨论】:
您可以通过文本更改列表器来做到这一点
当 text_size%3==0 插入“-”字符时
【讨论】: