美文网首页
android 监听键盘关闭方

android 监听键盘关闭方

作者: 是你呀小鑫 | 来源:发表于2017-09-28 11:44 被阅读0次

    最近项目里面要用到键盘,并且要控制键盘的关闭和弹起。在网上查了好多资料和事件,总结下一共有以下几种方法。

    1:在activity 中添加 以下代码

    OnGlobalLayoutListener 注册后 onGlobalLayout 方法会一直执行,处理完自己的逻辑后血要remove

    finalView activityRootView = findViewById(R.id.activityRoot);

    activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

    @Override 

    public void onGlobalLayout() {

    int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();

    if(heightDiff > dpToPx(this,200)) {// 显示软键盘}else{//隐藏软键盘}

    }

    });

    2:第二种 也是我现在才用的方法

    自定义 最外层的 View ,然后重写 onSizeChanged(int w, int h, int oldw, int oldh)方法。

    protected void onSizeChanged(int w, int h, int oldw, int oldh) {

    super.onSizeChanged(w,h,oldw,oldh);

    if(listener!=null){

    if(oldh > h) {

    listener.show();

    }else{

    listener.hidden();

    }

    }

    }

    3:第三种方法 自定义 EditText

    public class MyEditText extends EditText {

    public MyEditText(Context context) {

    super(context);

    }

    private OnFinishComposingListener mFinishComposingListener;

    public void setOnFinishComposingListener(OnFinishComposingListener listener) {

    this.mFinishComposingListener = listener;

    }

    @Override

    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {

    return newMyInputConnection(super.onCreateInputConnection(outAttrs),false);

    }

    public class MyInputConnection extends InputConnectionWrapper {

    public MyInputConnection(InputConnection target,booleanmutable) {

    super(target, mutable);

    }

    @Override

    public boolean finishComposingText() {

    boolean finishComposing =super.finishComposingText();

    if(mFinishComposingListener !=null) {

    mFinishComposingListener.finishComposing();

    }

    returnfinishComposing;

    }

    }

    public interface OnFinishComposingListener {

    public void finishComposing();

    }

    }

    第三种 个人觉得最好用,但是他有个问题就是 在个别三星机器上会弹不出键盘。

    以上就是自己项目用到总结的。希望遇到这种问题的同学,可以绕过这个坑。。

    相关文章

      网友评论

          本文标题: android 监听键盘关闭方

          本文链接:https://www.haomeiwen.com/subject/syymextx.html