###前言
EditText这个控件,是程序和用户沟通桥梁,它本身也定义了许多的方法,来满足形形色色的需求,这里进行汇总,难免会不全,请留言补充,谢谢!这里首先介绍过时的方法,在分类介绍,方便查阅。
###过时的方法
android:numeric
可以选择:
decimal:浮点数
interger:正整数
signed:可以负数
可以让EditText接收一个数字,回车键也变成了“完成”
比如,用decimal,则是55.54,而不是55.54.54
android:password="true"
设置是否以密文的形式显示输入的文本,可以用android:inputType中属性代替,后面介绍。
android:phoneNumber=”true”
这里输入电话号码,但是过时了,另外这里不具有判断手机号是否合适,只是打开数字键盘罢了,只能输入数字
android:editable="false"
设置EditText是否可以编辑,但是也是过时的,有提示说是inputType="none"代替,但是效果不是太好
android:singleLine
设置为false,会自动换行,但是该属性已经过时,可以用android:maxLines=”1”属性代替
###基础方法
需要注意,EditText上面有两块内容,一个是提示语,一个是用户输入的字
android:hint
显示提示文本,当用户点击时候,还有,只有输入完新的文本之后就会消失
android:textColorHint
设置提示文本的颜色
android:textColor
设置文本颜色(用户输入的)
android:textSize
设置文本字体大小(可以控制提示文本和用户输入的文本)
android:textColorHiglight
被选中字体的颜色,默认是Theme中的colorAccent中的颜色,这个是针对的,当用户用手长按住用户输入的内容,就会出来选中区域,用户可以选择剪切,粘贴之类的行为,而选中区域显示的颜色,就是这个属性定义的颜色
android:background
设置EditText背景,@null,设置的背景是透明,但是只要设置了背景色之后,EditText那条线就会消失,可以发现,不管是弄成什么颜色,那条线就没了
###针对于字体,光标,行距之类
android:textStyle
置文本字体样式,bold(加粗),italic(倾斜)、normal(正常,默认显示这个),这个控制的是提示文本和用户输入的文本,都控制。
android:textAlignment
设置EditText中文本显示的位置,
center:居中,
inherit:默认的,在右边显示,
viewStart:居左显示,
viewEnd:居右显示,
textStart:居左显示,
textEnd:居右显示
可以发现各有两个,前面view开头的是在最低十七,后面text开头是在最低14,
还需要注意是,这个针对于提示文字还有输入内容都管用
android:textCursorDrawable
设置光标的颜色,这里有一个很大的误区,修改光标的颜色,并不是用颜色,而是用shape标签修饰的drawable图片来完成,,但是可以通过@null和android:cursorVisible=”true”,让光标不显示,
其实经过自己测试,如果你错误的用了android:textCursorDrawable="#ffff44"之类的,那么光标也会消失,但是,并不会有你想要的效果,具体的shape,如下面:
android:textScaleX
设置文本的水平缩放系数,就是说,将提示文本和输入文本水平拉伸,
下面有一个放大了三倍效果的图和原来的进行比较:
android:typeface:
设置提示文本字体,和前面的斜体、加粗什么不一样哦,这个是针对于宋体、楷体之类的。
Android一共支持四中字体,sans字体、serifis字体、monospace字体、默认字体、
如何使用别的字体,
首先,java文件夹同级下建立assets文件夹,建立fonts文件夹,将ttf字体导入,
代码中:
AssetManager mgr = getAssets();
Typeface tf = Typeface.createFramAsset(mgr,”fonts/xxx.ttf”)
textView.setTypeface(tf);而EditText也是类似的,这里以TextView为例
android:lineSpacingExtra与android:lineSpacingMultiplier:
从字面意思上看,就是行与行之间的距离
这两个不同的是,第一个是直接设置值,比如50dp,第二个则是设置倍数,
android:textAppearance:
设置文本的颜色,字体,大小和样式,
一般是:android:textAppearance="?android:attr/textAppearanceLargeInverse"
但是没有看出效果来。
###针对于文本内容
android:digits
设置只接受指定的文本内容,比如设置了0123456这几个数字,那么在弹出软键盘时候,进行输入时候,发现,只有点击上面几个数字才有效果,要不然,点击是没有效果的。Edittext上面的内容也不会变化。
android:maxLength
设置EditText最多接受的文本的个数,比如你设置为2,那么你不管是输入,英文还是数字,加起来只能最多是2个
android:lines与android:maxLines和android:minLines
android:lines:设置EditText显示的行数,设置两行就是显示两行,要想有效果,需要的是height为wrap_content,
maxLines的EditText最大行数为3行,当输入的内容超过3行后,它形状的大小不会根据输入内容的多少而改变,反正它显示的内容就是3行
而使用minLines的EditText是至它至少显示3行内容(包括内容为空时,可对比图片),当输入的内容超过3行后,它形状的大小根据输入内容的多少而改变。
android:inputType
设置文本的类型,用于帮助输入法显示合适的键盘类型,这个是属于比较重要的应用。
(1)可以设置合适的键盘
text:普通文本键盘(经过测试像表情符号,英文,汉子,数字,标点,加减号都是可以的,并且回车键变成了下一步,这个是默认的)
(2)改变输入的内容
textCapSentences:普通的文本键盘,大写每个新句子的第一个字母,没看出来
textCapWord:大写每个单词的正常文本键盘,适合标题和人名
textCapCharachter:暂时没看出来
textAutoCorrect:正常文本键盘,可以纠正拼写错误的字词
textpassword:这个就和password=”true”一样
textMultiLine“普通文本键盘,允许用户输入包含换行字符的长字符串
android:imeOptions
也是关键属性,
设置右下角IME动作与编辑框相关的动作
关于它的属性和效果在键盘上的,一张图就完全的告诉了。
另外还可以设置监听
mEditText = (EditText) findViewById(R.id.my);
mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
boolean is = false;
if (i == EditorInfo.IME_ACTION_SEND) {//针对于不同的点击动作
Toast.makeText(MainActivity.this, "点击actionSearch执行的操作 ", Toast.LENGTH_SHORT).show();
is = true;
}
return is; //如果你想让键盘消失的话,那么这里直接返回false,不用进行拦截了.如果返回true 那么键盘不会消失.
}
});
//但是,需要注意:使用imeOptions时,如果你没有使用inputType属性,是不会有效果的.如果你还在使用Eclipse开发,可能还会用到android:singleLine="true"这一属性
###如何显示隐藏键盘
1、//隐藏软键盘
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(WidgetSearchActivity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
2、//显示软键盘,控件ID可以是EditText,TextView
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).showSoftInput(控件ID, 0);
###如何在进入一个Actiivty的时候不自动打开虚拟键盘
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
或者是:
###解決弹出Dialog又再自动弹出虚拟键盘如果Dialog中含有EditorText
AlertDialog dialog =new AlertDialog.Builder(this).setView(et_url).create();
dialog.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
dialog.show();
---------------------
作者:舵哥
来源:CSDN
原文:https://blog.csdn.net/liduolp/article/details/48491579
版权声明:本文为博主原创文章,转载请附上博文链接!