2016-05-27 3 views
0

Я использовал приведенный ниже код для получения высоты клавиатуры.Как получить высоту клавиатуры при открытии приложения

 
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
      @Override 
      public void onGlobalLayout() { 
       Rect rect = new Rect(); 
       view.getWindowVisibleDisplayFrame(rect); 

       int screenHeight = view.getRootView().getHeight(); 
       int keyboardHeight = screenHeight - rect.bottom; 
       if(keyboardHeight != 0){ 
        if(orientation == Configuration.ORIENTATION_LANDSCAPE) 
         AppConfig.landscapeKeyboardHeight = keyboardHeight; 
        else if(orientation == Configuration.ORIENTATION_PORTRAIT) 
         AppConfig.portraitKeyboardHeight = keyboardHeight; 
       } 
      } 
     }); 

Но это дает высоту, только когда приложение открывает клавиатуру в первый раз. Я хочу высоту клавиатуры еще до того, как она откроется впервые. Есть ли способ сделать это? Спасибо заранее ...

ответ

2

У меня была такая же проблема прежде, чтобы получить высоту клавиатуры для отображения некоторых диалоговых окон. Вы можете использовать метод ниже, чтобы решить эту проблему.

rootView = getWindow().getDecorView().getRootView(); 
rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 
      Rect rect = new Rect(); 
      rootView.getWindowVisibleDisplayFrame(rect); 

      int screenHeight = rootView.getHeight(); 
      int keyboardHeight = screenHeight - (rect.bottom - rect.top); 

      if(keyboardHeight > screenHeight/3){ 
       keyboardActive = true; 
       Log.d("Keyboard", "Active"); 

      } 
      else{ 
       keyboardActive = false; 
       Log.d("Keyboard", "Not Active"); 
      } 
     } 
    }); 
+1

Thankyou @Sunil .. это сработало :) – aravindkanna

+0

Пока это лучший ответ, который я нашел – orelzion

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