标签:android 安卓 禁用系统键盘 软键盘 自定义键盘 edittext光标
目前很多的输入法都有自动提示补全功能,在一些应用场景里不适用,需要禁用系统输入法,自定义软键盘,EditText的光标问题是比较头疼的,网上的说法很多,然而大部分都是解决不了问题的。以下是本人做的一个demo供网友参考。
直接上代码:
xml软键盘:
<android.inputmethodservice.KeyboardView android:id="@+id/keyboard_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/white" android:focusable="true" android:focusableInTouchMode="true" android:keyBackground="@drawable/btn_keyboard_key" android:keyTextColor="@color/black" android:visibility="gone" />
禁用系统输入法,解决EditText光标问题的重要代码:
public boolean onTouch(View v, MotionEvent event)
{
//隐藏输入法,显示光标
EditText et=(EditText)v;
int inType = et.getInputType(); // back up the input type
if (sdkInt>=11) {
Class<EditText> cls=EditText.class;
try {
Method setShowSoftInputOnFocus=cls.getMethod("setShowSoftInputOnFocus", boolean.class);
setShowSoftInputOnFocus.setAccessible(false);
setShowSoftInputOnFocus.invoke(et, false);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}else {
et.setInputType(android.text.InputType.TYPE_NULL); // disable soft input
et.setInputType(inType);
}
keyboardUtil=null;
keyboardUtil = new KeyboardUtil(act, ctx, et);
et.onTouchEvent(event);// call native handler
// restore input type
keyboardUtil.showKeyboard();
return true;
}其他代码就不贴了,需要完整demo的请自行下载。
本文出自 “11010803” 博客,请务必保留此出处http://11020803.blog.51cto.com/11010803/1737081
android安卓屏蔽禁用系统输入法,自定义软键盘,解决EditText光标问题demo
标签:android 安卓 禁用系统键盘 软键盘 自定义键盘 edittext光标
原文地址:http://11020803.blog.51cto.com/11010803/1737081