android:windowSoftInputMode属性详解以及editText监听键盘回车会执行两次的解决方法
16lz
2021-01-24
android:windowSoftInputMode各值的含义:
- stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
- stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
- stateHidden:用户选择activity时,软键盘总是被隐藏
- stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
- stateVisible:软键盘通常是可见的
- stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
- adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
- adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
- adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分
1. 启动activity时候强制editetext弹出输入法
/>
2. 启动activity时候禁止editetext弹出输入法
2.1 启动activity时候禁止editetext弹出输入法
让EditText失去焦点,使用EditText的clearFocus方法 例如:EditText edit=(EditText)findViewById(R.id.edit); edit.clearFocus();
2.2 强制隐藏Android输入法窗口
例如:EditText edit=(EditText)findViewById(R.id.edit);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(),0);
2.3 EditText始终不弹出软件键盘
例:EditText edit=(EditText)findViewById(R.id.edit);
edit.setInputType(InputType.TYPE_NULL);
注意,EditText监听键盘回车会执行两次
会发现执行了两次,当然原因很简单,引文onkey事件包含了down和up事件,所以只需要加入一个判断即可
etContent.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) { } return false; } });
更多相关文章
- Android隐藏输入法软键盘的一些说明
- Android开发中完全退出程序的三种方法
- Android中软键盘监听
- Android(安卓)搜索 把软键盘上的回车键改为搜索
- android学习---- WindowManager.LayoutParams
- android 点击空白出隐藏软键盘
- Android应用程序键盘(Keyboard)消息处理机制分析(6)
- Android(安卓)SDK Manager国内下载缓慢的问题
- Android中悬浮窗口的实现