Android 在已隐藏并聚焦编辑框后显示软键盘
我有一个问题,只在2.3设备上复制。 基本上,我有一个带有两个编辑文本的活动,这两个文本都是可聚焦的,用户可以在其中输入任何内容。 当我从纵向切换到横向时,我有一个要求,即不应显示虚拟键盘。为了实现这一点,在OnConfiguration Changed上,我使用InputMethodManager的HideOffInputFromWindow。 但是,如果说字段2在纵向模式下聚焦,当我切换到横向模式时,字段聚焦,但按下它不会打开键盘。 我甚至强迫它打开:Android 在已隐藏并聚焦编辑框后显示软键盘,android,show,hidden,android-softkeyboard,Android,Show,Hidden,Android Softkeyboard,我有一个问题,只在2.3设备上复制。 基本上,我有一个带有两个编辑文本的活动,这两个文本都是可聚焦的,用户可以在其中输入任何内容。 当我从纵向切换到横向时,我有一个要求,即不应显示虚拟键盘。为了实现这一点,在OnConfiguration Changed上,我使用InputMethodManager的HideOffInputFromWindow。 但是,如果说字段2在纵向模式下聚焦,当我切换到横向模式时,字段聚焦,但按下它不会打开键盘。 我甚至强迫它打开: edittext2.setOnClic
edittext2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
InputMethodManager keyboard = ( InputMethodManager )
getSystemService( Context.INPUT_METHOD_SERVICE );
keyboard.showSoftInput( v, InputMethodManager.SHOW_FORCED);
但是键盘在两个屏幕上都没有出现
看起来,因为它已经被聚焦,并且显示和隐藏了以前的键盘,所以系统决定不打开另一个键盘
你能给我建议一个快速解决这个问题的方法吗
以后
在调用showSoftInput之前,最终使用这个讨厌的解决方法解决了这个问题:
这个方法怎么样,
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);
}
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);
}