Android禁止EditText弹出输入法

网上方法很多,尝试的方法包括但不限于:

1.在AndroidMainfest.xml对应的Activity中加入android:windowSoftInputMode="stateHidden"。

它有九个取值: stateUnspecified、stateUnchanged、stateHidden、stateAlwaysHidden、stateVisible、stateAlwaysVisible、adjustUnspecified、adjustResize、adjustPan。具体含义可参考:

https://blog.csdn.net/twoicewoo/article/details/7384398/

https://www.cnblogs.com/gccbuaa/p/7049889.html

2.使用clearFocus方法清除EditText的焦点。

3.隐藏安卓输入法窗口:

EditText edit=(EditText)findViewById(R.id.edit); 
InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(),0);

均无效。最终使用的方法为设置

edit.setInputType(InputType.TYPE_NULL);

但是出现了焦点消失的问题,参考:https://blog.csdn.net/sinat_27672523/article/details/56839837解决

//禁止输入法弹出的同时不失去焦点与光标
public void disableShowInput() {
	if (android.os.Build.VERSION.SDK_INT <= 10) {
		h.setInputType(InputType.TYPE_NULL);
		m.setInputType(InputType.TYPE_NULL);
		s.setInputType(InputType.TYPE_NULL);
	} else {
		Class<EditText> cls = EditText.class;
		Method method;
		try {
			method = cls.getMethod("setShowSoftInputOnFocus", boolean.class);
			method.setAccessible(true);
			method.invoke(h, false);
			method.invoke(m, false);
			method.invoke(s, false);
		} catch (Exception e) {
		}
		try {
			method = cls.getMethod("setSoftInputShownOnFocus", boolean.class);
			method.setAccessible(true);
			method.invoke(h, false);
			method.invoke(m, false);
			method.invoke(s, false);
		} catch (Exception e) {
		}
	}
}

另外分享https://blog.csdn.net/mynameishuangshuai/article/details/51567357以供学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值