0

Я получаю высоту клавиатуры на Android, реализовав ViewTreeObserver.OnGlobalLayoutListener, выполнив:клавиатуры на Android

final Rect r = new Rect(); 
mRootLayout.getWindowVisibleDisplayFrame(r); 
int screenHeight = mRootLayout.getRootView().getHeight(); 
final int keyboardHeight = screenHeight - (r.bottom); 

Моя проблема заключается в том, что на некоторых устройствах я получаю высоту клавиатуры в два раза статус высота бара. Что происходит? Как я могу решить эту проблему?

Заранее спасибо

ответ

0
this.getWindow().setSoftInputMode(
      WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

Если добавить этот код, он будет регулировать экран автоматически, когда клавиатура выскакивает. Однако настройка будет выполняться путем ПОДТВЕРЖДЕНИЯ вашего макета. Это означает, что если ваш макет не имеет scrollBar, некоторое представление будет вырезано до тех пор, пока клавиатура не выскочит снова.

PS: вы можете добавить тот же код в файл манифеста приложений той же активности.

<activity android:name="YOUR ACTIVITY" 
     android:windowSoftInputMode="adjustPan"/> 

Всех возможные комбинации windoSoftInputMode

android:windowSoftInputMode=["stateUnspecified", 
            "stateUnchanged", "stateHidden", 
            "stateAlwaysHidden", "stateVisible", 
            "stateAlwaysVisible", "adjustUnspecified", 
            "adjustResize", "adjustPan"] 

Ссылка: Activity Element, Android's documentation

Надеется, что это помогает! Ура!

+0

Большое спасибо за ваш ответ. Мне нужно, чтобы эта функция настраивалаResize вместо adjustPan, в противном случае некоторые виды, которые не должны быть разрезаны, будут разрезаны. – FVod

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

  • Нет связанных вопросов^_^