EditText 的一些不常用属性
属性 | 说明 |
---|---|
android:hint | text内容为空时显示的文本 |
android:textColorHint | text内容为空时显示的文本颜色 |
android:minLines | 设置文本最小的行数 |
android:maxLines | 设置文本最大的行数 |
android:drawableLeft | 左面的图标(其他方向相同) |
android:drawablePadding | 设置text与drawable(图片)的间隔,可设置为负数,单独使用没有效果。 |
android:digits | 设置允许输入哪些字符。如“1234567890” |
android:ellipsize | 设置当文字过长时,该控件该如何显示。 |
android:lines | 设置文本的行数 |
android:lineSpacingExtra | 设置行间距如“1.5” |
android:singleLine | 是否单行显示 |
android:textStyle | 字体风格 |
android:numeric | integer(整数)decimal(小数) |
android:inputType | 限制输入类型 number:数字 numberDecimal:小数点类型 date:日期类型 text:文本类型(默认值) phone:手机号 textPassword:密码 textVisiblePassword:可见密码 textUri:网址 |
EditText 的一些设置
1. 禁止EditText自动获取焦点,弹出键盘
//在父控件中添加属性
android:focusable="true"
android:focusableInTouchMode="true"
2.软键盘的设置
//强制关闭软键盘
private void hideKeyBoard(){
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
}
// 改变键盘输入法的状态,如果已经弹出就关闭,如果关闭了就强制弹出
public static void chageInputState(Context context) {
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
//强制显示输入法
private void showKeyBoard(View v) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(v, InputMethodManager.SHOW_FORCED);// 显示输入法
}
//edit获取光标焦点
edittext.requestFocus();
edittext.findFocus();
3. 当EditText超过一定长度时,用省略号代替
android:singleLine="true"
android:ellipsize="end"
//start:省略号显示在开头
//end:省略号显示在结尾
//middle:省略号显示在中间
//marquee:以跑马灯的方式显示(动画横向移动)
4. EditText的长度监听事件
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.i("textbefore","内容改变之前调用:"+s);
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.i("texton","内容改变,可以去告诉服务器:"+s);
}
@Override
public void afterTextChanged(Editable s) {
Log.i("textafter","内容改变之后调用:"+s);
}
});