Edittext常用操作

  • ~4.86K 字

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

  • 控制输入内容

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"//前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

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"//设置只能输入整数,如果是小数则是: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"//文字外观,这里引用的是系统自带的一个外观
赞助喵
非常感谢您的喜欢!
赞助喵
分享这一刻
让朋友们也来瞅瞅!