2017-01-06 5 views
1

Я видел много вопросов о решении для мягкой клавиатуры show/hide listenener.Как заставить Android Soft клавиатуру показывать или скрывать слушателя лучше

Я думаю, что это решение отлично. Но на самом деле оно не работает. Так плохо. Listen for keyboard show or hide event in android

Наконец, я использовал это решение. Но я думаю, что это решение является временным решением. Мы не знаем, что 200dp правильно представляет собой мягкую клавиатуру. How to check visibility of software keyboard in Android?

Я хочу, чтобы EditText и Textview, находящиеся ниже EditText, находятся на верхней части мягкой клавиатуры, когда отображается мягкая клавиатура. И я надеюсь, что EditText и TextView (Родительский макет LinearLayout) не всегда выравнивают родительское дно , поэтому ... android: windowSoftInputMode = "adjustresize" не подходит.

Я думаю, что adjustPan замечательный, но он только позволяет EditText сверху, когда EditText находится в фокусе. Я хочу, чтобы они были сверху. T_T Помогите мне! Большое спасибо.

ответ

4

Чтобы знать, если клавиатура скрыта или видна, я использую этот код:

view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
      @Override 
      public void onGlobalLayout() { 
       Rect r = new Rect(); 
       view.getWindowVisibleDisplayFrame(r); 
       if (view.getRootView().getHeight() - (r.bottom - r.top) > 500) { // if more than 100 pixels, its probably a keyboard... 
        onKeyboardShow(); 
       } else { 
        onKeyboardHidden(); 
       } 
      } 
     }); 

onKeyboardShow & onKeyboardHidden функции мои собственные, которые затем делать то, что нужно.

+0

Спасибо ~ Но я не хочу этого решения. Я сказал: «Но я думаю, что это решение - просто временное решение. Мы не знаем, что 500dp (или пикселей) правильно отображает мягкую клавиатуру». – racwen

+0

Временного решения нет. Сегодня я действительно оглядывался, и есть библиотеки, которые содержат больше вспомогательных классов. Нет ничего постоянного, поскольку у Google нет классов для этого. Поддержка Googles для клавиатуры ужасна, и я хочу, чтобы они исправили это и предоставили нам официальную поддержку Клавиатуры, где разработчики могут ЛЕГКО к подобным вещам (включая скрытие и отображение клавиатуры). – apmartin1991

+0

Благодарим вас за эту подробную информацию. Я надеюсь, что официальным будет выпущен API. x_x – racwen

Смежные вопросы