现在各手机厂商深度化定制rom,在谷歌原生系统上重新开发了很多功能,比如EditText的长按或双击事件弹出框支持在线翻译,搜索等,如果你的项目出于信息安全考虑想禁止这些功能实现的话,你会发现网上现有的方法都无法做到适配所有手机,总有那么几款漏网之鱼,非常头疼。
下面介绍两种自己探索出来的方法,可以完美解决市面上的大部分手机(本人测试过的都可以)
方法一.自定义EditText,重写getDefaultMovementMethod()方法,返回null或者new BaseMovementMethod();这样EditText就失去了文本选择器,使用自定义的EditText替代项目中的EditText即可,详细方法不再赘述。
方法二.控制EditText是否可以触摸获焦
直接贴代码:
EditText etContent;
onResume(){
// 编辑框禁止触发长按事件
etContent.setLongClickable(false);
// 禁止编辑框横屏时弹出另外一个编辑界面
etContent.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
// 编辑框点击事件
etContent.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
InputMethodManager imm = (InputMethodManager) etContent.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
// 允许编辑框触摸获焦
etContent.setFocusableInTouchMode(true);
etContent.requestFocus();
// 编辑框强制弹出键盘
imm.showSoftInput(etContent, imm.SHOW_FORCED);
// 禁止编辑框触摸获焦
etContent.setFocusableInTouchMode(false);
}
});
}