当edittext被关注时,键盘

我想在EditText聚焦时自动显示软键盘(如果设备没有物理键盘),我有两个问题:

  • 当我的Activity显示时,我的EditText被关注,但键盘没有显示,我需要再次点击才能显示键盘(当我的Activity显示时它应该显示)。

  • 当我点击键盘上的键盘时,键盘会消失,但EditText保持聚焦状态,并且不想(因为我的编辑完成了)。

  • 要恢复,我的问题是在iPhone上有更多的东西:它使键盘与我的EditText状态保持同步(聚焦/不聚焦),当然如果有物理键盘则不会显示软键盘。


    要强制显示软键盘,可以使用

    EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
    

    而为了消除EditText的焦点,可悲的是你需要有一个虚拟View来抓住焦点。

    我希望这有帮助


    要关闭它,你可以使用

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0);
    

    我有同样的问题。 在editText VISIBILITY从GONE改变为VISIBLE之后,我不得不设置焦点并显示软键盘。 我使用下面的代码实现了这一点:

    new Handler().postDelayed(new Runnable() {
    
        public void run() {
    //        ((EditText) findViewById(R.id.et_find)).requestFocus();
    //              
            EditText yourEditText= (EditText) findViewById(R.id.et_find);
    //        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    //        imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
    
            yourEditText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN , 0, 0, 0));
            yourEditText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0));                           
        }
    }, 200);
    

    它适用于我100ms的延迟,但没有任何延迟或仅延迟1ms失败。

    部分代码的评论显示了另一种方法,该方法仅适用于某些设备。 我在OS 2.2(仿真器),2.2.1(真实设备)和1.6(仿真器)上测试过。

    这种方法为我节省了很多痛苦。


    要使键盘出现,请使用

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
    

    该方法比直接调用InputMethodManager更可靠。

    要关闭它,请使用

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
    
    链接地址: http://www.djcxy.com/p/16671.html

    上一篇: keyboard when edittext is focused

    下一篇: Disabling the fullscreen editing view for soft keyboard input in landscape?