拦截软键盘的返回键 Intercept back button from soft keyboard
来源:互联网 发布:xp禁止安装软件 编辑:程序博客网 时间:2024/06/07 13:49
弹出软键盘时,点击back键,只执行了关闭软键盘,普通的onKeyDown() onBackPressed() 不能拦截back事件,需要实现onKeyPreIme()方法。
比如,重写这个EditText
public class CustomEditText extends EditText { Context context; public CustomEditText(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; } @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { // User has pressed Back key. So hide the keyboard InputMethodManager mgr = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); mgr.hideSoftInputFromWindow(this.getWindowToken(), 0); // TODO: Hide your view as you do it in your activity } return false;}
这样就能拦截了或者重写主布局,例如主布局是RelativeLayout
/** * The root element in the search bar layout. This is a custom view just to * override the handling of the back button. * */public class SearchLayout extends RelativeLayout { private static final String TAG = "SearchLayout"; private static Activity mSearchActivity;; public SearchLayout(Context context, AttributeSet attrs) { super(context, attrs); } public SearchLayout(Context context) { super(context); } public static void setSearchActivity(Activity searchActivity) { mSearchActivity = searchActivity; } /** * Overrides the handling of the back key to move back to the * previous sources or dismiss the search dialog, instead of * dismissing the input method. */ @Override public boolean dispatchKeyEventPreIme(KeyEvent event) { Log.d(TAG, "dispatchKeyEventPreIme(" + event + ")"); if (mSearchActivity != null && event.getKeyCode() == KeyEvent.KEYCODE_BACK) { KeyEvent.DispatcherState state = getKeyDispatcherState(); if (state != null) { if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) { state.startTracking(event, this); return true; } else if (event.getAction() == KeyEvent.ACTION_UP && !event.isCanceled() && state.isTracking(event)) { mSearchActivity.onBackPressed(); return true; } } } return super.dispatchKeyEventPreIme(event); }}
0 0
- 拦截软键盘的返回键 Intercept back button from soft keyboard
- 关于ionic中ios系统无法去掉<ion-nav-back-button>返回键自带的返回back字
- 在Fragment中拦截BACK返回键,具体实现
- 按back键直接退出Activity,不关闭软键盘
- 按back键直接退出Activity,不关闭软键盘
- 按Back键直接关闭activity,而不是关闭软键盘
- 关于软键盘弹起时监听返回键的问题
- Android软键盘删除键触发Activity的返回事件
- 如何将软键盘的返回键改为“搜索”
- 软键盘的删除和返回键冲突
- Android软键盘删除键触发Activity的返回事件
- UITextField 与 keyboard (软键盘)
- IOS 软键盘灵活使用KeyBoard库
- keyboard 动态启动或关闭软键盘
- Keyboard 输入框与软键盘联动
- Keyboard 软键盘阻挡输入框爬坑指南
- 过滤器(filter)和拦截器(intercept)的区别
- Android popwindow的back拦截
- 登陆页面CSS
- 兼容多浏览器,兼容 div、p、td 的强制不换行及强制换行
- 导入 jar 包及第三方开源库教程
- UBUNTU12 ROOT用户登录
- Android随机生成颜色值
- 拦截软键盘的返回键 Intercept back button from soft keyboard
- 软件测试常见风险分析
- Java IO: 网络
- 真正的宝塔线指标
- Leetcode -- Text Justification
- NDK在studio中的编译
- 如何学好算法
- android listview 嵌套ListView,子lv高度的问题
- 关于.net平台开发程序连接oracle数据库查询语句中包含汉字的问题