Android 自定义输入框

本文介绍了在Android项目中如何创建自定义输入框,包括密码框、分割的方形输入框和下划线式输入框。文章详细讲解了自定义过程,涉及到属性定义、初始化、绘制方法以及焦点光标的实现,并提供了XML布局的使用示例。
摘要由CSDN通过智能技术生成

    现在的项目中,可能Android自带的输入框已经满足不了需求了,比如说密码框等等,今天就搞几个自定义的输入框,望大家指正。

参考来自YU  SplitEdittextView

    

如上效果图,有三种自定义输入框:

  • 分割的方形输入框
  • 下划线式的输入框
  • 连在一起的方形输入框

输入的内容也有两种形式:

  • 密码式的
  • 明文展示的

在自定义attr.xml文件中中定义了一些属性属性。

 <!-- 密码 验证码输入框-->
    <declare-styleable name="SplitEditTextView">
        <!--边框大小-->
        <attr name="borderSize" format="dimension" />
        <!--边框颜色-->
        <attr name="borderColor" format="color|reference" />
        <!--圆角大小-->
        <attr name="cornerSize" format="dimension" />
        <!--分割线大小-->
        <attr name="divisionLineSize" format="dimension" />
        <!--分割线颜色-->
        <attr name="divisionLineColor" format="reference|color" />
        <!--内容显示为圆的半径-->
        <attr name="circleRadius" format="dimension" />
        <!--输入内容数量-->
        <attr name="contentNumber" format="integer" />
        <!--输入内容显示样式-->
        <attr name="contentShowMode" format="enum">
            <!--显示成密码圆-->
            <enum name="password" value="1" />
            <!--显示成文本-->
            <enum name="text" value="2" />
        </attr>
        <!--单个输入框和下划线样式下,每个输入框之间的间距-->
        <attr name="spaceSize" format="dimension" />
        <!--输入框样式-->
        <attr name="inputBoxStyle" format="enum">
            <!--输入框整体相连的样式-->
            <enum name="connectBox" value="1" />
            <!--单个输入框样式-->
            <enum name="singleBox" value="2" />
            <!--下划线样式-->
            <enum name="underline" value="3" />
        </attr>
        <!--密码字体颜色-->
        <attr name="android:textColor" />
        <!--密码字体大小-->
        <attr name="android:textSize" />
        <!--输入框是否是正方形-->
        <attr name="inputBoxSquare" format="boolean" />
        <!--光标宽度-->
        <attr name="cursorWidth" format="dimension" />
        <!--光标高度-->
        <attr name="cursorHeight" format="dimension" />
        <!--光标颜色-->
        <attr name="cursorColor" format="color|reference" />
        <!--光标闪烁时长-->
        <attr name="cursorDuration" format="integer" />
        <!--下划线输入框样式下,下划线正常的颜色-->
        <attr name="underlineNormalColor" format="reference|color" />
        <!--下划线输入框样式下,下划线获取焦点时颜色-->
        <attr name="underlineFocusColor" format="reference|color" />
    </declare-styleable>

无非就是一些字体颜色、字体大小、输入框类型、输入框内容展示形式等,详情可以看代码注释。

下边开始上代码

  • 首先,做一些初始化的工作,获取attr属性,初始化画笔等工作
private void initAttrs(Context c, AttributeSet attrs) {
        TypedArray array = c.obtainStyledAttributes(attrs, R.styleable.SplitEditTextView);
        mBorderSize = array.getDimension(R.styleable.SplitEditTextView_borderSize, dp2px(1f));
        mBorderColor = array.getColor(R.styleable.SplitEditTextView_borderColor, Color.BLACK);
        mCornerSize = array.getDimension(R.styleable.SplitEditTextView_cornerSize, 0f);
        mDivisionLineSize = array.getDimension(R.styleable.SplitEditTextView_divisionLineSize, dp2px(1f));
        mDivisionColor = array.getColor(R.styleable.SplitEditTextView_divisionLineColor, Color.BLACK);
        mCircleRadius = array.getDimension(R.styleable.SplitEditTextView_circleRadius, dp2px(5f));
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值