TextView是EditText父类。
1,属性
1)输入格式
①inputType
设置文本的类型,用于帮助输入法显示合适的键盘类型。
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"//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"//时间键盘
②其他
--android:password="true"
密码格式。
代码中设置密码不可见:
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
--android:phoneNumber="true"
电话号码的输入方式。
--android:numeric
只接收数字。三种数字类型:integer(正整数)、signed(带符号整数,有正负)和decimal(浮点数)。
--android:capitalize
设置英文字母大写类型。
android:capitalize="cwj1987" 这样仅允许接受输入cwj1987,一般用于密码验证。
--android:digits
设置允许输入哪些字符。如“1234567890.+-*/% ()”
③EditText输入监听,小写字母自动转换为大写字母
2)输入字数控制
--android:macLines
输入框的最大行数。
--android:minLines
--android:maxLength
限制显示的文本长度,超出部分不显示。
--android:ems
设置TextView的宽度为N个字符的宽度。
--android:maxEms
设置TextView的宽度为最长为N个字符的宽度,超出会换行。与ems同时使用时覆盖ems选项。
editText.setFilters(new InputFilter[]{newInputFilter.LengthFilter(100)});
3)IME动作
①介绍
--android:imeActionId
设置IME动作ID。
--android:imeActionLabel
设置IME动作标签。
--android:imeOptions
附加功能,设置输入法右下角IME动作与编辑框相关的动作,如:
actionDone:效果:完成;对应常量EditorInfo.IME_ACTION_DONE
actionUnspecified:回车键;对应常量EditorInfo.IME_ACTION_UNSPECIFIED
actionNone:没有任何提示;对应常量EditorInfo.IME_ACTION_NONE
actionGo:去往、开始;对应常量EditorInfo.IME_ACTION_GO
actionSearch: 搜索,对应常量EditorInfo.IME_ACTION_SEARCH
actionSend: 发送,对应常量EditorInfo.IME_ACTION_SEND
actionNext: 下一个,对应常量EditorInfo.IME_ACTION_NEXT
flagNoExtractUi:回车键;使软键盘不全屏显示,只占用一部分屏幕。
②android:imeOptions实现
i>给EditText设置属性
android:imeOptions="actionSearch"
ii>上述属性不生效,还需要设置其它属性:
android:lines="1"
android:inputType="text"
iii>设置点击监听
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
if (i == EditorInfo.IME_ACTION_SEARCH) {
clickSearchBtn();
}
return false;
}
});
4)其他
--android:editorExtras
设置文本的额外的输入数据。
--android:hintText
为空时显示的文字提示信息,可通过textColorHint设置提示信息的颜色。此属性在EditView中使用,但是这里也可以用。
--android:privateImeOptions
设置输入法选项。
--android:autoText
如果设置,将自动执行输入值的拼写纠正。
--android:inputMethod
为文本指定输入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是这里报错找不到。
2,监听
1)输入监听
et.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// s是文本改变前的内容
// start是文本改变操作后输入光标所在位置
// count删除内容时是删除字符的个数,增加内容时为0
// after增加内容时是增加字符的个数,删除内容时为0
// 通过组件索引获得的text内容是改变前的
}
@Override
public void onTextChanged(CharSequence s, int start, int count, int after) {
// s是文本改变后的内容
// start是文本改变操作后输入光标所在位置
// count增加内容时是增加字符的个数,删除内容时为0
// after删除内容时是删除字符的个数,增加内容时为0
// 通过组件索引获得的text内容是改变后的
}
@Override
public void afterTextChanged(Editable editable) {// // editable是文本改变后的内容
}
});
2)点击监听
不可编辑但可点击,隐藏光标
editText.setCursorVisible(false);
editText.setFocusable(false);
editText.setFocusableInTouchMode(false);
3,软键盘
1)IME设置
参见前文IME属性介绍。
2)软键盘弹出设置
在AndroidManifest.xml对应的activity中设置:
android:windowSoftInputMode="adjustPan" 键盘就会覆盖屏幕
android:windowSoftInputMode="stateVisible|adjustResize" 屏幕整体上移
–stateUnspecified
默认设置:软键盘的状态(隐藏或可见)没有被指定。系统将选择一个合适的状态或依赖于主题的设置。
–stateUnchanged
软键盘被保持上次的状态。
–stateHidden
软键盘隐藏。
–stateAlwaysHidden
软键盘总是被隐藏的。
–stateVisible
键盘是可见的。
–stateAlwaysVisible
软键盘总是可见的。
–adjustUnspecified
系统自动决定是采用平移模式还是压缩模式,决定因素在于内容是否可以滚动。
–adjustResize(压缩模式)
当软键盘弹出时,要对主窗口调整屏幕的大小以便留出软键盘的空间。
–adjustPan(平移模式)
当输入框不会被遮挡时,该模式没有对布局进行调整,然而当输入框将要被遮挡时, 窗口就会进行平移。
3)软键盘的调起、关闭
i>一进入界面时隐藏软键盘
在EditText父控件添加如下:
android:focusableInTouchMode="true"
ii>调用数字键盘并设置输入类型和键盘为英文
etNumber.setInputType(InputType.TYPE_CLASS_NUMBER); //调用数字键盘
rlEditText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);//设置输入类型和键盘为英文 或者:android:inputType="textUri|textMultiLine"
iii>android:focusable=”false”//键盘永远不会弹出
<activity android:name=".AddLinkman"android:windowSoftInputMode="adjustUnspecified|stateHidden"/>//不自动弹出键盘
//关闭键盘(比如输入结束后执行)
InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(etEditText.getWindowToken(), 0);
//自动弹出键盘
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS);
etEditText.requestFocus();//让EditText获得焦点,但是获得焦点并不会自动弹出键盘
4,光标
edittext.requestFocusFromTouch();//让光标放入到点击位置。
edittext.requestFocus();//默认方式获得焦点
EditText editor = (EditText)getCurrentView();
//光标处插入
int cursor = editor.getSelectionStart();
editor.getText().insert(cursor,delta);
//让光标移到末端(这样文字就会向前显示)
et.setText(text); et.setSelection(text.length());
--android:cursorVisible="false"
隐藏光标
--android:background="#00000000"
不要文本框背景
--android:freezesText
设置保存文本的内容以及光标的位置
--android:selectAllOnFocus
如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。