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

来源:互联网 发布:樱井知香怎么喷那么多 编辑:程序博客网 时间:2024/06/06 17:41

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();}
阅读全文
0 0
原创粉丝点击