键盘的弹出和隐藏

第一种:弹出时判断是哪个控件下,收起时判断焦点

protected void hideSoftKeyboard()
    {
        if (getActivity().getCurrentFocus() != null)
        {
            InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
        }
    }


   protected void showSoftKeyboard(View v){
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        v.setFocusable(true);
        v.requestFocus();
        if(getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
        {
            imm.showSoftInput(v , InputMethodManager.SHOW_FORCED);
        }
    }

 

第二种:和第一种相反

 protected void hideSoftKeyboard(View v)
    {
        InputMethodManager imm = (InputMethodManager)
                        getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        if(imm!=null){
            imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
        }
    }


    protected void showSoftKeyboard()
    {
        if (getActivity().getCurrentFocus() != null)
        {
            InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
            inputMethodManager.showSoftInput(getActivity().getCurrentFocus(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }


推荐第一种用法。需要注意的是,如果Activity或Fragment的View没有初始化完毕,想要用以上方法默认自动弹出软键盘有可能会失败,此时需要提供一个延时弹出或者定时弹出,给几百毫秒左右,等Activity或Fragment的视图初始化完毕后再调用上面的方法。


 Handler handler = new Handler();
    private void initSoftInput(){
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                showSoftKeyboard(et_test); //弹出软键盘,et_test为输入框View
            }
        };
        handler.postDelayed(runnable,300);
    }



相关文章可以参考http://www.bubuko.com/infodetail-948827.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值