文本输入框是我们开发过程中经常需要用到的控件之一,因此,我们经常会碰到针对输入框的一些需求,下面简单列出几种操作。

  • 控制输入内容

    xml文件中通过digits限制输入某些数字

     android:digits="1234567890.-"

    这样输入就只能输入某些数字了。
    还有比较特殊的,比如输入时间

      android:inputType="date"

    inputType类型有很多种,常见的有text,numberPassword,phone,datetime等等,根据不同的需要选择不同的输入类型,可以减少输入框的校验过程。

    android:inputType="none"
    
    android:inputType="text"
    
    android:inputType="textCapCharacters"//前3个输入普通字符
    
    android:inputType="textCapWords"//单词首字母大小
    
    android:inputType="textCapSentences"//仅第一个字母大小
    
    android:inputType="textAutoCorrect"android:inputType="textAutoComplete"//前两个自动完成
    
    android:inputType="textMultiLine"//多行输入
    
    android:inputType="textImeMultiLine"//输入法多行(不一定支持)
    
    android:inputType="textNoSuggestions"//不提示
    
    android:inputType="textUri"//URI格式
    
    android:inputType="textEmailAddress"//电子邮件地址格式
    
    android:inputType="textEmailSubject"//邮件主题格式
    
    android:inputType="textShortMessage"//短消息格式
    
    android:inputType="textLongMessage"android:inputType="textPersonName"//人名格式
    
    android:inputType="textPostalAddress"//邮政格式
    
    android:inputType="textPassword"//密码格式
    
    android:inputType="textVisiblePassword"//密码可见格式
    
    android:inputType="textWebEditText"//作为网页表单的文本格式
    
    android:inputType="textFilter"//文本筛选格式
    
    android:inputType="textPhonetic"//拼音输入格式
    
    android:inputType="number"//数字格式
    
    android:inputType="numberSigned"//有符号数字格式
    
    android:inputType="numberDecimal"//可以带小数点的浮点格式
    
    android:inputType="phone"//拨号键盘
    
    android:inputType="datetime"android:inputType="date"//日期键盘
    
    android:inputType="time"//时间键盘
  • 控制下划线样式

    一般系统会根据当前主题给我们的输入框加一个默认的背景,可能是一个灰色的框框,也可能是一条难看的灰色下划线(具体看当前主题样式),一般情况下如果不需要输入框背景,可以这样做

    android:background="@null"

    当然,你也可以自定义自己喜欢的样式,比如做一个椭圆的shape给到输入框的背景,又或者你可以定义另类的下划线:
    首先是 et_underline_unselected

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="0dp"
        android:left="-2dp"
        android:right="-2dp"
        android:top="-2dp">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke
                android:width="1dp"
                android:color="@color/little_gray" />
            <padding android:bottom="4dp" />
        </shape>
    </item>
    </layer-list>

    然后是 et_underline_selected

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="0dp"
        android:left="-2dp"
        android:right="-2dp"
        android:top="-2dp">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke
                android:color="@color/accent"
                android:width="1dp" />
            <padding android:bottom="4dp" />
        </shape>
    </item>
    </layer-list>

    最后组合成selector

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="false" android:drawable="@drawable/et_underline_unselected"/>
    <item android:state_focused="true" android:drawable="@drawable/et_underline_selected"/>
    </selector>

    设置到输入框的背景就好了

    android:background="@drawable/edittext_bg_selector"

下面是效果

  • 光标样式

    这个就不详细赘述了,一个属性

    android:textCursorDrawable="@null"

    上面是去掉光标显示,如果需要自定义也可以自己定义一个drawable放上去就好了。

  • 其他属性

    android:hint="请输入数字!"//设置显示在空间上的提示信息
    android:numeric="integer"//设置只能输入整数,如果是小数则是:decimal
    android:singleLine="true"//设置单行输入,一旦设置为true,则文字不会自动换行。
    android:password="true"//设置只能输入密码
    android:textColor = "#ff8c00"//字体颜色
    android:textStyle="bold"//字体,bold, italic, bolditalic
    android:textSize="20dip"//大小
    android:capitalize="characters"//以大写字母写,设置英文字母大写类型。设置如下值:sentences仅第一个字母大写;words每一个单词首字母大小,用空格区分单词;characters每一个英文字母都大写。
    android:textAlign="center"//EditText没有这个属性,但TextView有,居中
    android:textColorHighlight="#cccccc"//被选中文字的底色,默认为蓝色
    android:textColorHint="#ffff00"//设置提示信息文字的颜色,默认为灰色
    android:textScaleX="1.5"//控制字与字之间的间距
    android:typeface="monospace"//字型,normal, sans, serif, monospace
    android:background="@null"//背景,这里没有,指透明
    android:layout_weight="1"//权重,控制控件之间的地位,在控制控件显示的大小时蛮有用的。
    android:textAppearance="?android:attr/textAppearanceLargeInverse"//文字外观,这里引用的是系统自带的一个外观
Last modification:December 3rd, 2019 at 01:46 pm
If you think my article is useful to you, please feel free to appreciate