文本输入框是我们开发过程中经常需要用到的控件之一,因此,我们经常会碰到针对输入框的一些需求,下面简单列出几种操作。
xml文件中通过digits限制输入某些数字
java android:digits="1234567890.-"
这样输入就只能输入某些数字了。
还有比较特殊的,比如输入时间
java android:inputType="date"
inputType类型有很多种,常见的有text,numberPassword,phone,datetime等等,根据不同的需要选择不同的输入类型,可以减少输入框的校验过程。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| android:inputType="none"
android:inputType="text"
android:inputType="textCapCharacters"
android:inputType="textCapWords"
android:inputType="textCapSentences"
android:inputType="textAutoCorrect"
android:inputType="textAutoComplete"
android:inputType="textMultiLine"
android:inputType="textImeMultiLine"
android:inputType="textNoSuggestions"
android:inputType="textUri"
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"
|
一般系统会根据当前主题给我们的输入框加一个默认的背景,可能是一个灰色的框框,也可能是一条难看的灰色下划线(具体看当前主题样式),一般情况下如果不需要输入框背景,可以这样做
java android:background="@null"
当然,你也可以自定义自己喜欢的样式,比如做一个椭圆的shape给到输入框的背景,又或者你可以定义另类的下划线:
首先是 et_underline_unselected
1 2 3 4 5 6 7 8 9
| <?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
1 2 3 4 5 6 7 8 9
| <?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
1 2 3 4 5
| <?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>
|
设置到输入框的背景就好了
1
| android:background="@drawable/edittext_bg_selector"
|
下面是效果

这个就不详细赘述了,一个属性
xml android:textCursorDrawable="@null"
上面是去掉光标显示,如果需要自定义也可以自己定义一个drawable放上去就好了。
其他属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| android:hint="请输入数字!" android:numeric="integer" android:singleLine="true" android:password="true" android:textColor = "#ff8c00" android:textStyle="bold" android:textSize="20dip" android:capitalize="characters" android:textAlign="center" android:textColorHighlight="#cccccc" android:textColorHint="#ffff00" android:textScaleX="1.5" android:typeface="monospace" android:background="@null" android:layout_weight="1" android:textAppearance="?android:attr/textAppearanceLargeInverse"
|