需求

android EditText 限制输入,只能输入 ip 地址

解决

IPSectionFilter.java

package com.tianze.platform.utils;

      import android.text.InputFilter;
      import android.text.Spanned;

      public class IPSectionFilter implements InputFilter {

	  /**
	   * @param source 新输入的字符串
	   * @param start  新输入的字符串起始下标,一般为0
	   * @param end    新输入的字符串终点下标,一般为source长度-1
	   * @param dest   输入之前文本框内容
	   * @param dstart 新输入的字符在原字符串中的位置
	   * @param dend   原内容终点坐标,
	   * @return 输入内容
	   */
	  @Override
	  public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
	      String sourceText = source.toString();
	      String destText = dest.toString();
      //        if(dstart==0 && "0".equals(source)){
      //            //如果输入是0 且位置在第一位,取消输入
      //            return "";
      //        }

	      StringBuilder totalText=new StringBuilder();
	      totalText.append(destText.substring(0,dstart))
		      .append(sourceText)
		      .append(destText.substring(dstart,destText.length()));


	      try {
		  if (Integer.parseInt(totalText.toString()) > 255) {
		      return "";
		  }
      //            else if (Integer.parseInt(totalText.toString())==0){
      //                //如果输入是0,取消输入
      //                return "";
      //            }
	      }
	      catch (Exception e){
		  return "";
	      }

	      if ("".equals(source.toString())){
		  return "";
	      }
	      return ""+Integer.parseInt(source.toString());
	  }
      }
ipText1 = view.findViewById(R.id.fragment_config_server_ip_edit_text_1);
ipText1.setFilters(new InputFilter[]{new IPSectionFilter()});
int ip1 = Integer.parseInt(ipText1.getText().toString());

参考