Android,自定义IP控件IPEditText

IPEditText是Android中一个自定义的IP地址输入控件,它允许用户输入IPv4地址。这个控件扩展了LinearLayout,并实现了TextWatcher接口,以监听文本变化并进行输入验证。IPEditText支持设置字体大小、颜色、边框宽度、点分隔符颜色等样式,并限制每个字段的输入范围在0-255之间。
这段时间,在写智能电表采集APP,在UI界面关于IP人性化输入上花了点时间,采用自定义控件的形式去实现。网上也有关于用TextWatcher实现IP的自定义的案例,但是存在些不足(数值范围、控件联动),本文采用TextWatcher+InputFilter+监听KEYCODE_DEL去实现。关键代码实现如下:

1.IPEditText样式:

<declare-styleable  name= "IPEditText" >
    <attr 
name= "textLength"  format= "integer"  />
    <attr 
name= "IPtextSize"  format= "dimension"  />
    <attr 
name= "IPtextColor"  format= "color"  />
    <attr 
name= "borderColor"  format= "color"  />
    <attr 
name= "borderWidth"  format= "dimension"  />
    <attr 
name= "pointColor"  format= "color"  />
    <attr 
name= "pointWidth"  format= "dimension"  />
    <attr 
name= "editNumber"  format= "integer"  />
</declare-styleable>


2.IPEditText实现类:

public class IPEditText extends LinearLayout implements TextWatcher {
   
private static final String TAG = "IPEditText";

    private int width;
    private int height;
    private Paint paint;

    private static final int DEFAULT_TEXT_MAX_LENGTH = 3;
    private static final int DEFAULT_TEXT_SIZE = 16;
    private static final int DEFAULT_TEXT_COLOR = Color.BLACK;
    private static final int DEFAULT_BORDER_COLOR = Color.argb(60,0,0,0);
    private static final int DEFAULT_BORDER_WIDTH = 2;
    private static final int DEFAULT_POINT_COLOR = Color.BLACK;
    private static final int DEFAULT_POINT_WIDTH = 2;
    private static final int DEFAULT_IP_EDITTEXT_LENGTH = 4;

    private int textLength;
    private int textSize;
    private int textColor;

    private int borderColor;
    private int borderWidth;

    private int pointColor;
    private int pointWidth;
    private int editNumber;


    private int default_height = px2dp(20);
    private int default_width = px2dp(60);

    private List<EditText> data = new ArrayList<>();

    public IPEditText(Context context) {
       
this(context, null)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值