本文主要是介绍EditText中光标、输入法用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天在项目中,遇到一个很辣手的需求:EditText表示输入的箱号,这个箱号是由 4个字母+7个数字 拼接而成,需要自己定义一个输入法,而且 其中的4个字母需要与服务器API的数据相匹配。
在这个需求中,EditText、AutoCompleteTextView 实现效果。
其中遇到了 光标、输入法的问题:
actv.setText(str);
actv.setSelection(str.length());//设置AutoCompleteTextView 光标
EditText、AutoCompleteTextView 的输入法禁用:
1、 /***
* 3.0以上系统 隐藏系统键盘
*/
private void hiddenKeyBoared() {
Class<EditText> cls = EditText.class;
try {
Method setShowSoftInputOnFocus = cls.getMethod(
"setShowSoftInputOnFocus", boolean.class);
setShowSoftInputOnFocus.setAccessible(false);
setShowSoftInputOnFocus.invoke(et_boxNo, false);
setShowSoftInputOnFocus.invoke(et_boxNo, false);
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2、 InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
3、 editText.setInputType(InputType.TYPE_NULL);
以上3种方式,都是禁用了输入法,但是没有了 光标,要有光标的话就得用下面这个方式了:
actv.setRawInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
actv.setTextIsSelectable(true); //设置光标的获取
这篇关于EditText中光标、输入法用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!