EditText:
<!--EditText文本编辑框,一般配合输入文本来使用-->
<EditText
android:id="@+id/et_content" //id
android:layout_width="match_parent" //宽度
android:layout_height="wrap_content" //高度
android:ellipsize="end" //设置当文字过长时,该控件该如何显示。有如下值设置:”start”—?省略号显示在开头;”end”——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)
android:hint="请输入依赖的名字……" //设置提示信息
android:maxLength="10" //最大输入长度,字母汉字算一个
android:singleLine="true" /> //设置单行输入,一旦设置为true,则文字不会自动换行。
EditText的常用属性:
EditText继承关系:View-->TextView-->EditText
EditText的属性很多,这里介绍几个:
android:inputType="textPassword" //键盘类型为密码
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" //以大写字母写
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" //文字外观
android:layout_gravity="center_vertical" //设置控件显示的位置:默认top,这里居中显示,还有bottom
android:gray="top" //多行中指针在第一行第一位置
et.setSelection(et.length()); //调整光标到最后一行
android:autoText //自动拼写帮助
android:capitalize //首字母大写
android:digits //设置只接受某些数字
Android:singleLine //是否单行或者多行,回车是离开文本框还是文本框增加新行
android:numeric //只接受数字
android:phoneNumber //输入电话号码
android:editable //是否可编辑
android:autoLink=”all” //设置文本超链接样式当点击网址时,跳向该网址
android:textAppearance="?android:attr/textAppearanceLargeInverse" //文字外观,这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。不知道这样理解对不对?
android:autoLink //设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)
android:autoText //如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。
android:bufferType //指定getText()方式取得的文本类别。选项editable 类似于StringBuilder可追加字符,也就是说getText后可调用append方法设置文本内容。spannable 则可在给定的字符区域使用样式,参见这里1、这里2。
android:capitalize //设置英文字母大写类型。此处无效果,需要弹出输入法才能看得到,参见EditView此属性说明。
android:cursorVisible //设定光标为显示/隐藏,默认显示。
android:digits //设置允许输入哪些字符。如“1234567890.+-*/% ()”
代码设置允许输入哪些字符
editText.setKeyListener(DigitsKeyListener.getInstance("0123456789"));
android:drawableBottom //在text的下方输出一个drawable,如图片。如果指定一个颜色的话会把text的背景设为该颜色,并且同时和background使用时覆盖后者。
android:drawableLeft //在text的左边输出一个drawable,如图片。
android:drawablePadding //设置text与drawable(图片)的间隔,与drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。
android:drawableRight //在text的右边输出一个drawable,如图片。
android:drawableTop //在text的正上方输出一个drawable,如图片。
android:editable //设置是否可编辑。
android:editorExtras //设置文本的额外的输入数据。在EditView再讨论。
android:ellipsize //设置当文字过长时,该控件该如何显示。有如下值设置:”start”—?省略号显示在开头;”end”——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)
android:freezesText //设置保存文本的内容以及光标的位置。参见:这里。
android:gravity //设置文本位置,如设置成“center”,文本将居中显示。
android:hintText //为空时显示的文字提示信息,可通过textColorHint设置提示信息的颜色。此属性在EditView中使用,但是这里也可以用。
android:imeOptions //附加功能,设置右下角IME动作与编辑框相关的动作,如actionDone右下角将显示一个“完成”,需要搭配android:singleLine="true"一起使用才会生效
捕捉imeOptions的功能事件:
etVerificationNum.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE){
}
return false;
}
});
设置无效时需要设置以下任意一项
1 将singleLine设置为true
2 将inputType设置为text
详细参考:
android:imeActionId //设置IME动作ID。在EditView再做说明,可以先看这篇帖子:这里。
android:imeActionLabel //设置IME动作标签。在EditView再做说明。
android:includeFontPadding //设置文本是否包含顶部和底部额外空白,默认为true。
android:inputMethod //为文本指定输入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是这里报错找不到。
android:inputType //设置文本的类型,用于帮助输入法显示合适的键盘类型。在EditView中再详细说明,这里无效果。
android:linksClickable //设置链接是否点击连接,即使设置了autoLink。
android:marqueeRepeatLimit //在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次。
android:ems //设置TextView的宽度为N个字符的宽度。这里测试为一个汉字字符宽度,如图:
android:maxEms //设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项。
android:minEms //设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。
android:maxLength //限制显示的文本长度,超出部分不显示。
android:lines //设置文本的行数,设置两行就显示两行,即使第二行没有数据。
android:maxLines //设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。
android:minLines //设置文本的最小行数,与lines类似。
android:lineSpacingExtra //设置行间距。
android:lineSpacingMultiplier //设置行间距的倍数。如”1.2”
android:numeric //如果被设置,该TextView有一个数字输入法。此处无用,设置后唯一效果是TextView有点击效果,此属性在EdtiView将详细说明。
android:password //以小点”.”显示文本
android:phoneNumber //设置为电话号码的输入方式。
android:privateImeOptions //设置输入法选项,此处无用,在EditText将进一步讨论。
android:scrollHorizontally //设置文本超出TextView的宽度的情况下,是否出现横拉条。
android:selectAllOnFocus //如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。TextView中设置后无效果。
android:shadowColor //指定文本阴影的颜色,需要与shadowRadius一起使用。效果:
android:shadowDx //设置阴影横向坐标开始位置。
android:shadowDy //设置阴影纵向坐标开始位置。
android:shadowRadius //设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。
android:singleLine //设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text="test_ singleLine " android:singleLine="true" android:layout_width="20dp"将只显示“t…”。如果不设置singleLine或者设置为false,文本将自动换行
android:shadowDx //设置阴影横向坐标开始位置。
android:shadowDy //设置阴影纵向坐标开始位置。
android:shadowRadius //设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。
android:singleLine //设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text="test_ singleLine " android:singleLine="true" android:layout_width="20dp"将只显示“t…”。如果不设置singleLine或者设置为false,文本将自动换行
android:text //设置显示文本.
android:textSize //设置文字大小,推荐度量单位”sp”,如”15sp”
android:textStyle //设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开
android:typeface //设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3]
android:height //设置文本区域的高度,支持度量单位:px(像素)/dp/sp/in/mm(毫米)
android:maxHeight //设置文本区域的最大高度
android:minHeight //设置文本区域的最小高度
android:width //设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width的区别看这里。
android:maxWidth //设置文本区域的最大宽度
android:minWidth //设置文本区域的最小宽度
android:textAppearance //设置文字外观。如“?android:attr/textAppearanceLargeInverse”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。可设置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse
设置左边图标的边距:
android:paddingStart="12dp"
设置hint内容距离图标的边距:
android:drawablePadding="10dp"
Java类里的EditText方法可向下搜索:
EditText类:
一般配合该控件使用的Java类可向下搜索::TextUtils类
EditText想要让默认输入类型为数字,并且可以切换到其他输入类型:
setRawInputType(InputType.TYPE_CLASS_NUMBER);
不改变输入类型,但首先弹出数字键盘。
设置文本类型:
etVerificationNum.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_VARIATION_PASSWORD);
注意:通过代码给InputType赋值时,不是设置TYPE_XXX_VARIATION_YYY,而是要设置TYPE_CLASS_XXX | TYPE_XXXX_VARAITION_YYY
设置回车符跳转到焦点:
android:nextFocusDown="@id/(下一个控件ID)"
监听文本输入事件:
private EditText mEditText; //声明一个文本编辑框的对象
mEditText = (EditText) findViewById(R.id.et_content); //把布局文件里的文本编辑框绑定到当前声明的对象
mEditText.addTextChangedListener(new TextWatcher() //添加文本变化的监听器
这个时候会出现自动生成的3个方法,如果没有出现,则alt+回车用智能提示来创建
这3个方法每一个文本改变的时候都可以调用里面的方法,只是方法里的参数属性各不相同,每一个都代表不同的含义
根据需要进行的操作需要用到哪一些属性,来选择对应的方法:
/**
* 文本变化的数量
* @param s 变化之前的文本内容
* @param start 变化之前文本的总数量
* @param count 监听的变化数量 每次都是0
* @param after 当前一次输入的文本长度
*/
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//输入前执行该方法(当前录入的单个字节生效之前触发)
}
/**
*
* @param s 当前输入的文本内容
* @param start 当前改变文字的位置
* @param before 监听的变化数量 每次都是0
* @param count 当前一次输入的文本长度
*/
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//输入后执行该方法(当前录入的单个字节生效之后触发)
}
/**
*
* @param s 当前输入的文本内容
*/
@Override
public void afterTextChanged(Editable s) {
//输入结束执行该方法
}
点击完成换行事件:
返回true代表你已经将该点击事件消化掉,不会把点击事件产生的结果返回给edittext,而返回false代表你没有消化掉该点击事件,将返回结果传给edittext,edittext就会换行
et_money.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.e("输入完点击确认执行该方法", "输入结束");
return false;
}
});
捕捉imeOptions的完成功能事件:
etVerificationNum.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE){
}
return false;
}
});
关闭/打开软键盘:
/**
* 关闭/打开键盘
*
* @param editText editText
*/
protected void setSoftInput(EditText editText, Boolean isOpen) {
if (imm != null && imm.isActive()) {
if (isOpen) {
imm.showSoftInput(editText, 0);
} else {
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
}
}
//初始化
private InputMethodManager imm;
imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
用代码设置最大输入长度:
etVerificationNum.setFilters(new InputFilter[]{new InputFilter.LengthFilter(Integer.MAX_VALUE)});
设置光标位置:
editText.setSelection(textValue[0].length());
去除下滑线:
android:background="@null"
如何使edittext点击后全选里面的内容
editText.setSelection(0, length);editText.setSelection(0);editText.setSelectAllOnFocus(true);
焦点监听事件:
editText.setOnFocusChangeListener(new android.view.View.
OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
// 此处为得到焦点时的处理内容
} else {
// 此处为失去焦点时的处理内容
}
}
});
//设置ellipsize为null(可编辑)
private void setEllipsizeNull(EditText editText) {
editText.setEllipsize(null);
editText.setKeyListener(new TextKeyListener(TextKeyListener.Capitalize.NONE, false));
}
//设置ellipsize为end(不可编辑,结尾显示...)
private void setEllipsizeEnd(EditText editText) {
editText.setKeyListener(null);
editText.setEllipsize(TextUtils.TruncateAt.END);
}
让EditText失去默认焦点:
把这两行代码添加至EditText控件的父级控件中,把屏幕焦点设置到父级控件上,EditText就会暂时失去焦点
android:focusable="true"
android:focusableInTouchMode="true"
获取焦点:
etGoodsInput.setFocusable(true);
etGoodsInput.requestFocus();
代码设置密码模式:
如果不生效,需要同时设置InputType.TYPE_CLASS_TEXT
EditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD)
更改光标颜色:
android:textCursorDrawable="#FFFFFF"
设置下划线颜色:
<style name="MyEditText" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@color/indigo</item>
<item name="colorControlActivated">@color/pink</item>
</style>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Hint text"
android:theme="@style/MyEditText"/>
禁止输入:
editTextView.setEnabled(false);
监听删除键:
mEditTextTelNum.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
String content = mEditTextTelNum.getText().toString();
int length = content.length();
content.endsWith("-");
}
return false;
}
});