Android中关于键盘管理,点击除editText外的区域收起键盘

   借鉴这位大神的:http://blog.csdn.net/qibin0506   代码如下:
/** * Created by xiaoMan on 2016/11/22. * Email:1635401972@qq.com * Details: */public class AutoHideIMEFrameLayout extends 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(MotionEvent ev) {        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(View focusView, MotionEvent event) {        Rect rect = new Rect();        focusView.getHitRect(rect);        return !rect.contains((int) event.getX(), (int) event.getY());    }    private void hideInputMethod(View currentFocus) {        if (currentFocus == null) {            return;        }        InputMethodManager imm = (InputMethodManager) currentFocus.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);        imm.hideSoftInputFromWindow(currentFocus.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);    }}

2

/** * Created by xiaoMan on 2016/11/22. * Email:1635401972@qq.com * Details: */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));    }}

3.使用的时候只需:

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    AppManager.getAppManager().addActivity(this);    setContentView(R.layout.activity_set_email_layout);    HideIMEUtil.wrap(this);//键盘管理,点击除editText外区域收起键盘    initView();    setTopView();}

更多相关文章

  1. android 按键映射qwerty.kl文件中的WAKE和WAKE_DROPPED的定义
  2. android 模拟器键盘控制键不能用 以及 设置模拟器屏幕大小
  3. android中动态给EditText获得焦点并弹起软键盘的方法详解
  4. Android(安卓)windowSoftInputMode属性
  5. android强制键盘关闭
  6. Android(安卓)7.0软键盘隐藏问题
  7. Android自定义键盘之汉字键盘
  8. android中自定义view涉及到的绘制知识
  9. Android(安卓)设置屏幕不待机

随机推荐

  1. 我的第十个代码
  2. 几种Linux系统切换内核启动顺序方法
  3. PHP基础: 字符串函数
  4. 我的第13个代码
  5. 三十而已的年纪,三十真的可以还可以转行吗
  6. 我的第12个代码
  7. 航电oj2006-2008参考代码
  8. 2021.2.18今日小结
  9. 2021.2.18
  10. 《JS对象与流程控制》