在安卓开发中,我们会用到输入IP地址的情况,默认的文本编辑控件可能输入不规范。为了使输入规范,方便客户使用,自定义IP地址控件。功能如下:
1.分为4个输入框,用于输入ip地址,中间用点隔开
2.只能输入数字(0-255)超出范围会报提示,清空输入
3.输入三个字符或者输入"."自动跳转到下一个输入框
成品效果:
控件后台代码如下:
package com.lx.controler;
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;
public class IPEditText extends LinearLayout {
private EditText firstIPEdit;
private EditText secondIPEdit;
private EditText thirdIPEdit;
private EditText fourthIPEdit;
private String firstIP;
private String secondIP;
private String thirdIP;
private String fourthIP;
public IPEditText(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
View view = LayoutInflater.from(context).inflate(R.layout.ip_edit_text, this);
firstIPEdit = (EditText) view.findViewById(R.id.firstIPfield);
secondIPEdit = (EditText) view.findViewById(R.id.secondIPfield);
thirdIPEdit = (EditText) view.findViewById(R.id.thirdIPfield);
fourthIPEdit = (EditText) view.findViewById(R.id.fourthIPfield);
setIPEditTextListener(context);
}
public void setIPEditTextListener(final Context context){
//设置第一个字段的事件监听
firstIPEdit.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
Log.i("test",s.toString());
if(null!=s && s.length()>0){
if(s.length() > 2 || s.toString().trim().contains(".")){
if(s.toString().trim().contains(".")){
firstIP = s.toString().trim().substring(0,s.l