Дополнительно
Есть ли способ в Android, чтобы получить высоту виртуальной клавиатуры устройства
Есть ли способ в Android, чтобы получить высоту виртуальной клавиатуры, отображаемой на устройстве во время выполнения? На самом деле я хочу показать текстовое поле над клавиатурой.
37
10
Чтобы решить эту я написал keyboardHeightProvider, который может рассчитать высоту плавающего мягкая клавиатура. Активность может быть установлен в adjustNone или adjustPan в AndroidManifest.xml.
https://github.com/siebeprojects/samples-keyboardheight
Зибе
Я перепробовал много предложенных методов для этого, но никто, казалось, работали для СДЛ Андроид. Я думаю, что это либо потому, что дисплей СДЛ есть "Полный" как экран; или что он сидит в "и AbsoluteLayout" и поэтому высота от "Вид" и никогда не меняется. Этот метод работал для меня:
https://stackoverflow.com/questions/13534365/getting-the-dimensions-of-the-soft-keyboard
Да можно, с помощью Viewtree наблюдателя и глобального слушателя макет, попробуйте указанные ниже действия
теперь всякий раз, когда экранная клавиатура отображается андроид изменить размер вашего экрана, и вы получите звонок на ваш слушатель. Что'ы это единственное, что вам сейчас нужно сделать-это рассчитать разницу между высотой вашего корневого мнение после повторного размера и первоначального размера. Если разница составляет более 150 рассматривайте это как клавиатура была завышена.
Ниже приведен пример кода
С уважением, Techfist
поместите текстовое поле в родительском дне.
и в файле манифеста сделать adjustresize мягкий ввод ``
тогда текстовое поле будет двигаться вверх, когда клавиатура появляется.
Вы можете'т сказать. Нет, правда: вы просто можете'т сказать.
Клавиатура не нуждается в какой-либо конкретной формы. Это не должны быть помещены в нижней части экрана (много из популярные параметры не), он не должен держать его текущего размера при изменении текстовых полей (почти никто в зависимости от флагов). Он даже не должны быть прямоугольный. Он может также просто принять за весь экран.
(копия моего ответа на подобный вопрос, https://stackoverflow.com/questions/13534365/getting-the-dimensions-of-the-soft-keyboard )
Я'вэ создал проект библиотеки получить высоту клавиатуры для Android, даже если деятельность не'т использовать adjustResize` режим ввода.
https://github.com/Crysis21/KeyboardHeightProvider
Мое решение-сочетание всех вышеуказанных решений. Это решение тоже суховато, но решить проблему (по крайней мере для меня).
окончательный вид = команду findViewById(Р. ИД.базы);
вид.getViewTreeObserver().addOnGlobalLayoutListener(новый OnGlobalLayoutListener() {
@Переопределить onGlobalLayout общественного недействительными() {
инт rootViewHeight = вид.getRootView().getHeight(); Смотреть ТВ = команду findViewById(Р. ИД.temp_view); положение int[] = новый тип int[2]; ТВ.getLocationOnScreen(местоположение); int высота = (тип int) (локация[1] + телевизор.getMeasuredHeight()); дефф = rootViewHeight - высота; // дефф-высота мягкая клавиатура
} });
Но в любом случае, чтобы решить проблему @zeeshan0026 только один флаг в манифесте
андроид:windowSoftInputMode="и adjustResize"
в достаточно.Смотрите не больше! Я'вэ искал решение для этого в течение длительного времени. После нескольких дней попыток все трюки предложил на СОФ, я нашел идеальное решение, которое действительно работает.
Этот проект GitHub демонстрирует это наилучшим образом: https://github.com/siebeprojects/samples-keyboardheight
Получайте удовольствие!
Я использовал это, чтобы получить высоту клавиатуры программно в Android и протестировали его, пожалуйста, попробуйте еще это:
Спасибо.
Этот метод работает с adjustNothing или любой windowSoftInputMode на вашу деятельность.
С помощью
PopupWindow
, вы можете иметь отдельные "и поведение клавиатуры" и для него, и он сообщит вам, что размер клавиатуры. В PopupWindow имеет высоту экрана, а ширину 0px, так что вы выиграли'т вижу, он выиграл'т повлиять на вашу деятельность, но и предоставим вам необходимую информацию.Создайте класс, называемый
KeyboardHeightProvider
и добавьте следующий код:Обратите внимание, как PopupWindow имеет свой собственный
setSoftInputMode (...), так что он не'т важно, что вы установить в вашей деятельности, в PopupWindow еще долго будет сказываться на клавиатуре, открывая или закрывая и обеспечит родительской активности высоту. Если высота в
>= 100` можно считать открытой клавиатуре.Чтобы его использовать, просто инстанцировать его в вашей деятельности'метод onCreate ы
(...)
метод после setContentView(...)`: