安卓软键盘

关于安卓的软键盘
这是一份普通的清单文件

我们的软键盘 实际上是一个 Dialog 那么 在获取输入焦点的时候 会对应的弹出来 以下是这个标签的属性值. 这个属性是flag
软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置

当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示

用户选择activity时,软键盘总是被隐藏

当该Activity主窗口获取焦点时,软键盘也总是被隐藏的

软键盘通常是可见的

用户选择activity时,软键盘总是显示的状态

默认设置,通常由系统自行决定是隐藏还是显示

该Activity总是调整屏幕的大小以便留出软键盘的空间(不会推布局)

当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分(推布局)

拓展:在使用PopupWindow的时候 EditText 会不弹键盘
//这行代码可能会带来其它的问题 但是能解决 不弹软键盘的问题 popupWindow.setFocusable(true);

拓展:软键盘的禁用
getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); //禁用软键盘 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); //解除禁用

拓展:关于软键盘的监听
//此方法 对有些 虚拟键盘不生效尤其是模拟器上,需要物理键盘如果需要的话可以利用down事件来做处理 @Override public boolean dispatchKeyEvent(KeyEvent event) { switch (event.getKeyCode()){ case KeyEvent.KEYCODE_ENTER://监听系统软键盘上的回车键 InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if(inputMethodManager.isActive()){ //判断键盘有没有被隐藏 inputMethodManager.hideSoftInputFromWindow(MainActivity.this.getCurrentFocus().getWindowToken(), 0); editText.setText("呵呵呵"); } return true; case KeyEvent.KEYCODE_0://如果你按了0 //TODO: editText.setText("哈哈哈"); return true; } return super.dispatchKeyEvent(event); }

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if(actionId == EditorInfo.IME_ACTION_NONE){ //在XML文件中EditText声明属性 imeOpstions //actionNone : 回车键,按下后光标到下一行 //actionGo : Go, //actionSearch : 搜搜 //actionSend : Send //actionNext : 下一项 //actionDone : Done,确定/完成,隐藏软键盘,即使不是最后一个文本输入框 editText.setText("看效果"); return true; } return false; } });

【安卓软键盘】Tsingke 清单文件中的作用
Vander丶 关于软键盘的知识 内含有改变回车键的样式
AirrWang 关于自定义键盘

    推荐阅读