Loading... > 文本输入框是我们开发过程中经常需要用到的控件之一,因此,我们经常会碰到针对输入框的一些需求,下面简单列出几种操作。 * ### 控制输入内容 xml文件中通过digits限制输入某些数字 ```java android:digits="1234567890.-" ``` 这样输入就只能输入某些数字了。 还有比较特殊的,比如输入时间 ```java android:inputType="date" ``` inputType类型有很多种,常见的有text,numberPassword,phone,datetime等等,根据不同的需要选择不同的输入类型,可以减少输入框的校验过程。 ```java 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"//时间键盘 ``` ``` * ### 控制下划线样式 一般系统会根据当前主题给我们的输入框加一个默认的背景,可能是一个灰色的框框,也可能是一条难看的灰色下划线(具体看当前主题样式),一般情况下如果不需要输入框背景,可以这样做 ```java android:background="@null" ``` 当然,你也可以自定义自己喜欢的样式,比如做一个椭圆的shape给到输入框的背景,又或者你可以定义另类的下划线: 首先是 et_underline_unselected ```xml <?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 <?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 <?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> ``` 设置到输入框的背景就好了 ```java android:background="@drawable/edittext_bg_selector" ``` 下面是效果  * ## 光标样式 这个就不详细赘述了,一个属性 ```xml android:textCursorDrawable="@null" ``` 上面是去掉光标显示,如果需要自定义也可以自己定义一个drawable放上去就好了。 * ##其他属性 ```java ``` 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"//文字外观,这里引用的是系统自带的一个外观 ``` 最后修改:2022 年 03 月 17 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏