当前位置:K88软件开发文章中心编程语言APP编程Android01 → 文章内容

2.3.2 EditText(输入框)详解

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-12 6:25:09

本节引言:上一节中我们学习了第一个 UI控件TextView(文本框),文中给出了很多实际开发中可能遇到的一些需求的解决方法,应该会为你的开发带来便利,在本节中,我们来学习第二个很常用的控件EditText(输入框);和TextView非常类似,最大的区别是:EditText可以接受用户输入!和前面一样,我们不一个个讲属性,只讲实际应用,要扣属性可以自己查看API文档:API文档;那么开始本节内容!1.设置默认提示文本如下图,相信你对于这种用户登录的界面并不陌生,是吧,我们很多时候都用的这种界面相比另外这种,下面这种又如何?还不赖是吧,当然,不会在这里贴布局,这里只介绍默认提示文本的两个控制属性:默认提示文本的两个属性如下:android:hint="默认提示文本"android:textColorHint="#95A1AA"前者设置提示的文本内容,后者设置提示文本的颜色!2.获得焦点后全选组件内所有文本内容当我们想在点击输入框获得焦点后,不是将光标移动到文本的开始或者结尾;而是获取到输入框中所有的文本内容的话!这个时候我们可以使用selectAllOnFocus属性android:selectAll比如下面的效果图:第一个是设置了该属性的,第二个是没设置该属性的,设置为true的EditText获得焦点后选中的是所有文本!3.限制EditText输入类型有时我们可能需要对输入的数据进行限制,比如输入电话号码的时候,你输入了一串字母,这显然是不符合我们预期的,而限制输入类型可以通过inputType属性来实现!比如限制只能为电话号码,密码(textPassword):<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="phone" /> 可选参数如下:文本类型,多为大写、小写和数字符号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"//时间键盘4.设置最小行,最多行,单行,多行,自动换行EditText默认是多行显示的,并且能够自动换行,即当一行显示不完的时候,他会自动换到第二行我们可以对其进行限制,比如设置最小行的行数:android:minLines="3"或者设置EditText最大的行数:android:maxLines="3"PS:当输入内容超过maxline,文字会自动向上滚动!!另外很多时候我们可能要限制EditText只允许单行输入,而且不会滚动,比如上面的登陆界面的例子,我们只需要设置android:singleLine="true"即可实现单行输入不换行5.设置文字间隔,设置英文字母大写类型我们可以通过下述两个属性来设置字的间距:android:textScaleX="1.5" //设置字与字的水平间隔android:textScaleY="1.5" //设置字与字的垂直间隔另外EditText还为我们提供了设置英文字母大写类型的属性:android:capitalize默认none,提供了三个可选值:sentences:仅第一个字母大写words:每一个单词首字母大小,用空格区分单词characters:每一个英文字母都大写6.控制EditText四周的间隔距离与内部文字与边框间的距离我们使用margin相关属性增加组件相对其他控件的距离,比如android:marginTop = "5dp"使用padding增加组件内文字和组件边框的距离,比如android:paddingTop = "5dp"7.设置EditText获得焦点,同时弹出小键盘关于这个EditText获得焦点,弹出小键盘的问题,前不久的项目中纠结了笔者一段时间需求是:进入Activity后,让EditText获得焦点,同时弹出小键盘供用户输入!试了很多网上的方法都不可以,不知道是不是因为笔者用的5.1的系统的问题!下面小结下:首先是让EditText获得焦点与清除焦点的edit.requestFocus(); //请求获取焦点edit.clearFocus(); //清除焦点获得焦点后,弹出小键盘,笔者大部分时间就花在这个上:低版本的系统直接requestFocus就会自动弹出小键盘了稍微高一点的版本则需要我们手动地去弹键盘:第一种:InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);第二种:InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(view,InputMethodManager.SHOW_FORCED); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); //强制隐藏键盘 不知道是什么原因,上面这两种方法并没有弹出小键盘,笔者最后使用了:windowSoftInputMode属性解决了弹出小键盘的问题,这里跟大家分享下:android:windowSoftInputModeActivity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。这个属性能影响两件事情:【一】当有焦点产生时,软键盘是隐藏还是显示【二】是否减少活动主窗口大小以便腾出空间放软键盘简单点就是有焦点时的键盘控制以及是否减少Act的窗口大小,用来放小键盘有下述值可供选择,可设置多个值,用"|"分开stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显

[1] [2]  下一页


2.3.2 EditText(输入框)详解