IP地址输入控件(仿照windows的ip输入做的)

windows ip输入是这样的
         我的ip输入是这样的,看着一样。

用法:和IPEditText用法一样,settext()   gettext()函数即可。
package xxx;

import android.content.Context;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

import xxx.R;

public class IPEditText extends LinearLayout {
private static final String TAG="IPEditText";
   private EditText mFirstIP;
   private EditText mSecondIP;
   private EditText mThirdIP;
   private EditText mFourthIP;
   private boolean NullAndPoint=false;
   public IPEditText(Context context, AttributeSet attrs) {
      super(context, attrs);
      /**
       * 初始化控件
       */
      View view = LayoutInflater.from(context).inflate(
            R.layout.custom_my_edittext, this);
      mFirstIP = (EditText)findViewById(R.id.ip_first);
      mSecondIP = (EditText)findViewById(R.id.ip_second);
      mThirdIP = (EditText)findViewById(R.id.ip_third);
      mFourthIP = (EditText)findViewById(R.id.ip_fourth);
      OperatingEditText(context);
   }
   
   /**
    * 获得EditText中的内容,当每个Edittext的字符达到三位时,自动跳转到下一个EditText,当用户点击.时,
    * 下一个EditText获得焦点
    */
   private void OperatingEditText(final Context context) {
      mFirstIP.addTextChangedListener(new TextWatcher() {
         @Override
         public void onTextChanged(CharSequence s, int start, int before,
                             int count) {
            /*
             * 获得EditTe输入内容,做判断,如果大于255,提示不合法,当数字为合法的三位数下一个EditText获得焦点,
             * 用户点击.时,下一个EditText获得焦点
             */
            if (s != null && s.length() > 0&&mFirstIP.getSelectionStart()!=0) {
               Log.i(TAG,s.toString());
               if (!s.toString().contains(".")&&Integer.parseInt(s.toString()) > 255) {
                     Toast.makeText(context, "请输入合法的格式",
                           Toast.LENGTH_LONG).show();
                     mFirstIP.setText("255");
                     mFirstIP.setSelection(0);
                  } else if (s.length() > 2 ) {
                  mSecondIP.setFocusable(true);
                  mSecondIP.requestFocus();
                  if(mSecondIP.getText().toString().length()>0) {
                     mSecondIP.selectAll();
                  }
                     
               }else{
                  mFirstIP.requestFocus();
                  mFirstIP.setSelection(s.length());
               }
               if(s.toString().length()==1&&s.toString().equals(".")){
                  mFirstIP.setText("");
               }
     
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值