2015-04-16 2 views
2

Как получить высоту Android-клавиатуры?Как получить высоту Android-клавиатуры?

Старается:

KeyboardView keyboardView = new KeyboardView(_activity.getApplicationContext(), null); 
Log.i("","xxx height " + keyboardCustom.mKeyboardView.getHeight()); 
      Log.i("","xxx height " + keyboardCustom.mKeyboardView.getBottom()); 

Но всегда получает 0.

+0

ваша клавиатура видна – playmaker420

+0

см это: HTTP: //stackoverflow.com/questions/6009487/get-the -height-of-virtual-keyboard-in-android –

+0

Это всегда неправильный вопрос (особенно с плавающей клавиатурой). Что вы на самом деле пытаетесь сделать? – ianhanniballake

ответ

5

Используйте OnGlobalLayoutListener для получения высоты клавиатуры или реализацию выше фрагмента кода

  • chatRootLayout вашего XML корневого макет
  • передать этот rootLayout в качестве параметра parentLayout в checkKeyboardHeight

    private void checkKeyboardHeight(final View parentLayout) 
    { 
        chatRootLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() 
        { 
         @Override 
         public void onGlobalLayout() 
         { 
           Rect r = new Rect(); 
    
           chatRootLayout.getWindowVisibleDisplayFrame(r); 
    
           int screenHeight = chatRootLayout.getRootView().getHeight(); 
           int keyboardHeight = screenHeight - (r.bottom); 
    
           if (previousHeightDiffrence - keyboardHeight > 50) 
           {       
            // Do some stuff here 
           } 
    
           previousHeightDiffrence = keyboardHeight; 
           if (keyboardHeight> 100) 
           { 
            isKeyBoardVisible = true; 
            changeKeyboardHeight(keyboardHeight); 
           } 
           else 
           { 
            isKeyBoardVisible = false; 
           } 
          } 
        }); 
    

    }

Вот метод changeKeyboardHeight()

private void changeKeyboardHeight(int height) 
{ 
    if (height > 100) 
    { 
      keyboardHeight = height; 
      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, keyboardHeight); 
      yourLayout.setLayoutParams(params); 
    } 
} 
+0

Я использую parentLayout как _activity.getWindow(). GetDecorView() и chatRootLayout как EditTextEx. И никогда не вызывайте addOnGlobalLayoutListener –

+1

Вызовите метод checkKeyboardHeight() на свой onCreate() и убедитесь, что ваш parentLayout & chatRootLayout должен быть вашим корневым/основным макетом xml (будь то Linear/Relative). –

+0

Я пытаюсь получить высоту виртуальной клавиатуры для Unity3d. У меня нет xml-макета –