1) APP项目中经常会开发自定义软键盘;同时在使用EditView时,也会常常遇到自动弹出系统自带的软键盘,与自定义的软键盘产生冲突的情况;此时需要禁止EditView自动弹出系统软键盘,从而使自定义的软键盘正常显示。
2) 正常的禁用系统软键盘方法无法满足需求,eg:在复制粘贴文本前,选中EditView中的文本时,Android系统会自动调起软键盘,与自定义的软键盘产生冲突;此时需要特殊处理一下。
希望达到的效果是无论如何点击EditView,系统软键盘绝对不会弹出来——实现彻底禁止EditView自动弹出系统软键盘。
1)首先,在清单文件AndroidManifest.xml中,给EditView所在的Activity页面设置属性
android:windowSoftInputMode="stateHidden"
eg:(示例仅供参考)
<activity
android:name=".promise.sun.DemoActivity"
android:windowSoftInputMode="stateHidden"/>
2)然后,找到EditView所在的xml布局文件,找到EditView的父布局(容器),设置属性
android:focusable="false"
android:focusableInTouchMode="false"
eg:(示例仅供参考)
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false">
<EditText
android:id="@+id/et_search"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_35"
android:layout_gravity="center"
android:background="@drawable/bg_white_border_buleside_10"
android:drawableLeft="@drawable/icon_search"
android:drawableRight="@drawable/icon_clear"
android:hint="请输入"
android:maxLength="12"
android:maxLines="1"
android:paddingLeft="@dimen/dp_30"
android:paddingRight="@dimen/dp_10"
android:singleLine="true"
android:textColor="@color/app_black"
android:textColorHint="@color/grey_nine"
android:textColorHighlight="@color/blue_two"
android:textCursorDrawable="@drawable/cursor"
android:textSize="@dimen/sp_14" />
</RelativeLayout>
3)最后,找到EditView所在的Activity,在初始化时设置方法
editView.setShowSoftInputOnFocus(false);
4)完美解决,亲测有效。