加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

EditText输入自动空格

发布时间:2020-12-15 03:13:46 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 package?cn.juzhong.util;import?android.text.Editable;import?android.text.Selection;import?android.text.TextWatcher;import?android.widget.Edi

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

package?cn.juzhong.util;

import?android.text.Editable;
import?android.text.Selection;
import?android.text.TextWatcher;
import?android.widget.EditText;

public?class?EditTextUtil?implements?TextWatcher{
????private?int?beforeTextLength?=?0;?//输入前的长度
????private?int?onTextLength?=?0;?//文字的长度
????private?boolean?isChanged?=?false;?
????private?int?location?=?0;//记录光标的位置
????private?char[]?tempChar;?
????private?StringBuffer?buffer?=?new?StringBuffer();?
????private?int?blankNumber?=?0;??
????private?EditText?editText;
????
????public?EditTextUtil(EditText?text){
????????editText?=?text;
????}

????@Override
????public?void?afterTextChanged(Editable?arg0)?{
????????//?TODO?Auto-generated?method?stub
????????if(isChanged){
????????????location?=?editText.getSelectionEnd();
????????????int?index?=?0;
????????????while?(index?<?buffer.length())?{
????????????????if?(buffer.charAt(index)?==?'?')?{
????????????????????buffer.deleteCharAt(index);
????????????????}?else?{
????????????????????index++;
????????????????}
????????????}

????????????index?=?0;
????????????int?konggeNumberC?=?0;
????????????while?(index?<?buffer.length())?{
????????????????if?((index?==?4?||?index?==?9?||?index?==?14?||?index?==?19))?{
????????????????????buffer.insert(index,?'?');
????????????????????konggeNumberC++;
????????????????}
????????????????index++;
????????????}

????????????if?(konggeNumberC?>?blankNumber)?{
????????????????location?+=?(konggeNumberC?-?blankNumber);
????????????}

????????????tempChar?=?new?char[buffer.length()];
????????????buffer.getChars(0,?buffer.length(),?tempChar,?0);
????????????String?str?=?buffer.toString();
????????????if?(location?>?str.length())?{
????????????????location?=?str.length();
????????????}?else?if?(location?<?0)?{
????????????????location?=?0;
????????????}

????????????editText.setText(str);
????????????Editable?etable?=?editText.getText();
????????????Selection.setSelection(etable,?location);
????????????isChanged?=?false;
????????}
????}

????@Override
????public?void?beforeTextChanged(CharSequence?text,?int?arg1,?int?arg2,????????????int?arg3)?{
????????//?TODO?Auto-generated?method?stub
????????beforeTextLength?=?text.length();
????????if(buffer.length()?>?0){
????????????buffer.delete(0,?buffer.length());
????????}
????????
????????blankNumber?=?0;
????????for(int?i?=?0;i?<?text.length();i?++){
????????????if(text.charAt(i)?==?'?'){
????????????????blankNumber?++;
????????????}
????????}
????}

????@Override
????public?void?onTextChanged(CharSequence?text,?int?arg3)?{
????????//?TODO?Auto-generated?method?stub
????????onTextLength?=?text.length();
????????buffer.append(text.toString());
????????if(onTextLength?==?beforeTextLength?||?onTextLength?<=?3
????????????????||?isChanged){
????????????isChanged?=?false;
????????????return;
????????}
????????
????????isChanged?=?true;
????}

}
bankNumberEditText.addTextChangedListener(new?EditTextUtil(bankNumberEditText));

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读