Android 点击任意位置隐藏
2016-07-11 15:49
423 查看
public class AutoHideIMEFrameLayoutextends FrameLayout { public AutoHideIMEFrameLayout(Context context) { super(context); } public AutoHideIMEFrameLayout(Context context, AttributeSet attrs) { super(context, attrs); } public AutoHideIMEFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean dispatchTouchEvent(MotionEventev) { if(ev.getAction()== MotionEvent.ACTION_DOWN) { Context context = getContext(); if (context == null || !(context instanceof Activity)) { return super.dispatchTouchEvent(ev); } Activity activity = (Activity) context; View focusView = activity.getCurrentFocus(); if (focusView != null && shouldHideInputMethod(focusView, ev)) { hideInputMethod(focusView); } } return super.dispatchTouchEvent(ev); } private boolean shouldHideInputMethod(ViewfocusView, MotionEvent event) { Rect rect = new Rect(); focusView.getHitRect(rect); if(rect.contains((int)event.getX(), (int)event.getY())) { return false; } return true; } private void hideInputMethod(ViewcurrentFocus) { if (currentFocus == null) { return;} InputMethodManager imm = (InputMethodManager) currentFocus.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(currentFocus.getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); } }
public class HideIMEUtil {
public static void wrap(Activity activity) {
ViewGroup contentParent = (ViewGroup) activity.findViewById(android.R.id.content);
wrap(contentParent);
}
public static void wrap(Fragment fragment) {
ViewGroup contentParent = (ViewGroup) fragment.getView().getParent();
wrap(contentParent);
}
public static void wrap(ViewGroup contentParent) {
View content = contentParent.getChildAt(0);
contentParent.removeView(content);
ViewGroup.LayoutParams p= content.getLayoutParams();
AutoHideIMEFrameLayout layout = new AutoHideIMEFrameLayout(content.getContext());
layout.addView(content);
contentParent.addView(layout,new ViewGroup.LayoutParams(p.width, p.height));
}
}
activity 和fragment 初始化
HideIMEUtil.wrap(this);
相关文章推荐
- 【Android】FlatBuffer与Json
- Android中Recyclerview使用2----实现添加删除条目时加动画
- 我的android学习之路
- 利用 LeakCanary 来检查 Android 内存泄漏
- 分模块开发完美衔接小知识
- (4.2.33)Android上玩玩Hook(1):Cydia Substrate初识
- Android开源特效常用链接大集合
- Android中Recyclerview使用1----实现ListView,GridView,瀑布流样式
- Android 存储
- Android实现从相册选择或者直接拍照来设置圆形的头像CircleImageView
- Android RocooFix 使用注意事项
- 建立activity管理器,随时随地退出程序
- Android 图片三级缓存加载框架原理解析与代码实现
- android 打包成jar包(转)
- Android静态安全检测 -> 升级包数据篡改
- 一些比较好的Android 开源框架
- Android 表格HorizontalScrollView+ListView
- Android开发艺术探索读书笔记(第14章 JNI和NDK编程)
- android 开发赚钱
- Android二维码开发学习教程