显示已经隐藏和编辑框聚焦后的软键盘

时间:2013-03-28 14:58:18

标签: android show hidden android-softkeyboard

我遇到的问题只能在2.3设备上重现。 基本上,我有一个带有两个EditTexts的活动,它们都是可聚焦的,用户可以在其中输入任何内容。 当我从纵向切换到横向时,我要求说明不应显示虚拟键盘。为了实现这一点,在OnConfigurationChanged上我使用InputMethodManager的hideSoftInputFromWindow。 但是,如果让我们说场景2在纵向模式下聚焦,当我切换到横向模式时,场会聚焦但按下它不会打开键盘。 我甚至强迫它打开:

edittext2.setOnClickListener(new OnClickListener() {
@Override
    public void onClick(View v) {
InputMethodManager keyboard = ( InputMethodManager )
getSystemService( Context.INPUT_METHOD_SERVICE );
keyboard.showSoftInput( v, InputMethodManager.SHOW_FORCED);

但键盘也没有出现。

似乎因为它已经被聚焦并且以前的键盘被显示和隐藏,系统决定不再打开另一个键盘。

你能为我建议一个快速修补程序吗?

LATER

最后在调用 showSoftInput 之前使用这个有点讨厌的解决方法解决了这个问题:

edittext2.clearFocus
edittext2.requestFocus

1 个答案:

答案 0 :(得分:0)

这个方法怎么样;

 public static void setKeyboardFocus(final EditText primaryTextField) {
    (new Handler()).postDelayed(new Runnable() {
        public void run() {
            primaryTextField.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 0, 0, 0));
            primaryTextField.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, 0, 0, 0));
        }
    }, 100);
}