当前位置: 移动技术网 > IT编程>移动开发>Android > Android手机号码输入框(满11位自动跳到下个输入框)实例代码

Android手机号码输入框(满11位自动跳到下个输入框)实例代码

2019年07月24日  | 移动技术网IT编程  | 我要评论

雅皮士h20,seo实战密码 pdf,锡膏厚度测试仪

废话不多说了,直接给大家贴代码了,具体代码如下所示:

package com.jixiong.teen.view;
import android.content.context;
import android.text.editable;
import android.text.selection;
import android.text.textwatcher;
import android.util.attributeset;
import android.widget.edittext;
/**
 * created by christy on 16/12/22.
 */
public class moblieedittext extends edittext {
  public moblieedittext(context context) {
    super(context);
    this.addtextchangedlistener(new mobliewatcher());
  }
  public moblieedittext(context context, attributeset attrs) {
    super(context, attrs);
    this.addtextchangedlistener(new mobliewatcher());
  }
  public moblieedittext(context context, attributeset attrs, int defstyleattr) {
    super(context, attrs, defstyleattr);
    this.addtextchangedlistener(new mobliewatcher());
  }
  class mobliewatcher implements textwatcher {
    int beforetextlength = 0;
    int ontextlength = 0;
    boolean ischanged = false;
    int location = 0;// 记录光标的位置
    private char[] tempchar;
    private final stringbuffer buffer = new stringbuffer();
    int konggenumberb = 0;
    @override
    public void beforetextchanged(charsequence s, int start, int count,
                   int after) {
      beforetextlength = s.length();
      if (buffer.length() > 0) {
        buffer.delete(0, buffer.length());
      }
      konggenumberb = 0;
      for (int i = 0; i < s.length(); i++) {
        if (s.charat(i) == ' ') {
          konggenumberb++;
        }
      }
    }
    @override
    public void ontextchanged(charsequence s, int start, int before, int count) {
      ontextlength = s.length();
      buffer.append(s.tostring());
      if (ontextlength == beforetextlength || ontextlength <= 3 || ischanged) {
        ischanged = false;
        return;
      }
      ischanged = true;
    }
    @override
    public void aftertextchanged(editable s) {
      if (ischanged) {
        location = 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 == 3 || index == 8)) {
            buffer.insert(index, ' ');
            konggenumberc++;
          }
          index++;
        }
        if (konggenumberc > konggenumberb) {
          location += (konggenumberc - konggenumberb);
        }
        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;
        }
        settext(str);
        editable etable = gettext();
        selection.setselection(etable, location);
        ischanged = false;
      }
    }
  }
}

使用;;

直接在布局中引用

<com.jixiong.teen.view.moblieedittext
  android:id="@+id/etusernums"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="@null"
  android:hint="@string/user_name"
  android:inputtype="number"
  android:maxlines="1"
  android:paddingleft="@dimen/margin_twenty"
  android:singleline="true"
  android:textcolorhint="@color/hint_color"
  android:textsize="@dimen/sp_14" />

然后再activity中初始化

etusernums.addtextchangedlistener(new teenemptywatcher() {
  @override
  public void ontextchanged(charsequence s, int start, int before, int count) {
  }
  @override
  public void aftertextchanged(editable s) {
    if (s != null && s.length() == 13) {
      if (etusernums.isfocused()) {
        etusernums.clearfocus();
        etuserpwd.requestfocus();
      }
    }
  }
});

总结

以上所述是小编给大家介绍的android手机号码输入框(满11位自动跳到下个输入框)实例代码,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网