标签:rectangle man sequence limit tin character 方式 round 获取
最近做一些简单工作比较多,关于edittextview使用比较多,来总结一下
如何自动获取焦点,如何取消自动获取焦点。
之前写过一些东西,参考链接:https://www.cnblogs.com/wisdomzhang/p/12303577.html
et_pwd.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override
public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) {
} else {
//to do something
}
}
});
//文本改变 里面的有什么
et_pwd.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//文本改变之前 s从start开始,会有count个字符被替换,最后成为after
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//文本改变中 s从start开始,有before个字符已经被替换为count个字符
if (mpwd == null || s.length() != mpwd.length()) {
mpwd = s.toString();
}
}
@Override
public void afterTextChanged(Editable s) {
//文本改变后
}
});
InputFilter[] filters = { new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
//to do something
}
}, ...};
et_value.setFilters(filters); //可以添加多种过滤
输入中有一个,不常见的问题就是输入联想。输入法自动给你添加一些文字,这个时候,会给他添加一个过滤。
a.文本输入的类型有两种方案:
代码控制如下:
et_value.setInputType(InputType.TYPE_CLASS_TEXT | ...);
xml控制:
android:inputType="textWebPassword"
b.密码是否可见
//显示密码
et_pwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
//隐藏密码
et_pwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
c.输入来的类型控制
只输入数字,只输入英文字符,输入数字和字母,只输入汉字等等。
有一些解决办法:
使用xml的属性,digits="123456789" digits="12345xml"等等,来控制输入的字符。
使用textwatcher,来控制输入,过滤掉输入的类容
//控制只能输入指定的特殊字符
editText.setKeyListener(new NumberKeyListener(){
@Override
protected char[] getAcceptedChars() {
return new char[] { ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘,‘9‘, ‘0‘ };
}
@Override
public int getInputType() {
// TODO Auto-generated method stub
return android.text.InputType.TYPE_CLASS_PHONE;
}
});
只能输入中文
@Override
public void afterTextChanged(Editable s) {
//中文过滤
String inputStr = clearLimitStr(regex, str);
et_value.removeTextChangedListener(this);
// et.setText方法可能会引起键盘变化,所以用editable.replace来显示内容
s.replace(0, s.length(), inputStr.trim());
et_value.addTextChangedListener(this);
}
输入的长度控制,length
就可以了
如果是长度超过控件宽度,可以滑动显示文本,可以设置如下:
et_value.setSingleLine(true);
et_value.setHorizontallyScrolling(true);
//中文的长度限制
new InputFilter() { //中文长度限制,50
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
int keep = itemValue.getLength() - (dest.length() - (dend - dstart));
if (keep <= 0) {
Toast.makeText(m, "最多只能输入" + mMax + "个汉字", Toast.LENGTH_SHORT).show();
return "";
} else if (keep >= end - start) {
return null;
} else {
keep += start;
if (Character.isHighSurrogate(source.charAt(keep - 1))) {
--keep;
if (keep == start) {
return "";
}
}
return source.subSequence(start, keep);
}
}
}
//弹出键盘
InputMethodManager imm = (InputMethodManager) LoginActivity.this .getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(et_pwd, InputMethodManager.RESULT_SHOWN);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
焦点光标的颜色
//属性
android:textCursorDrawable="@drawable/shape_login_color_cursor"
//样式
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size android:width="1dp" />
<solid android:color="@color/color_login_bg_normal" />
</shape>
下划线的颜色
不要下划线 background = "@null" 或者设置为 background = "#ffffff"
android:theme
方式修改
<style name="EditTextStyle">
<!--表示控件默认的颜色-->
<item name="android:colorControlNormal">#ccc</item>
<!--表示控件被激活时的颜色-->
<item name="android:colorControlActivated">#ccc</item>
</style>
标签:rectangle man sequence limit tin character 方式 round 获取
原文地址:https://www.cnblogs.com/wisdomzhang/p/12683500.html