- Высота строки состояния в Android
- 19 ответов
- текущий метод:
- (старый метод), чтобы получить высоту строки состояния на onCreate() метод вашей деятельности, используйте этот метод:
- Высота строки состояния в Android
- Текущий метод:
- (старый метод), чтобы получить высоту строки состояния для onCreate() метода вашей деятельности, используйте этот метод:
- Высота строки состояния в Android
- 19 ответов:
- текущий метод:
- (старый метод), чтобы получить высоту строки состояния на onCreate() метод вашей деятельности, используйте этот метод:
Высота строки состояния в Android
какова высота строки состояния в Android? Это всегда одно и то же?
из моих измерений кажется, что это 25dp, но я не уверен, что он имеет одинаковую высоту на всех платформах.
(Я хочу знать это, чтобы правильно реализовать переход fade от действия, которое не имеет строки состояния к тому, что делает)
19 ответов
на этот вопрос был дан ответ раньше. высота строки состояния?
обновление::
текущий метод:
ok, высота строки состояния зависит от размера экрана, например, в устройстве с размером экрана 240 X 320 высота строки состояния 20px, для устройства с размером экрана 320 X 480 высота строки состояния 25px, для устройства с 480 x 800 высота строки состояния должна быть 38px
поэтому я рекомендую использовать этот скрипт для получения строки состояния height
(старый метод), чтобы получить высоту строки состояния на onCreate() метод вашей деятельности, используйте этот метод:
из всех образцов кода, которые я использовал для получения высоты строки состояния, единственный, который действительно работает в onCreate метод Activity это:
по-видимому, фактическая высота строки состояния сохраняется как ресурс Android. Приведенный выше код можно добавить в ContextWrapper класса (например, Activity ).
на устройствах MDPI строка состояния 25px. Мы можем использовать это как основание и умножить его на плотность (округлено), чтобы получить высоту строки состояния на любом устройстве:
для справки: ldpi=.75, mdpi=1, hdpi=1.5, xhdpi=2
по данным рекомендации по дизайну Google; высота строки состояния 24 dp.
Если вы хотите получить высоту строки состояния в пикселях, вы можете использовать следующий метод:
который можно вызвать из activity с помощью:
Я объединил некоторые решения вместе:
это также работает с refrence ссылке
Hardcoding размер или использование отражения, чтобы получить значение status_bar_height считается плохой практикой. Крис Бейнс говорили об этом в Droidcon в Нью-Йорке. Рекомендуемый способ получения размера строки состояния — через OnApplyWindowInsetsListener:
Это было добавлено в API 20 и также передается через ViewAppCompat.
у меня такая же проблема с тем, чтобы получить высоту строки состояния в onCreate. Это работает для меня.
Да, когда я пробую его с видом, он предоставляет результат 25px. Вот весь код :
официальная высота 24dp , как официально заявлено Google на веб-страница дизайна Android.
высота по умолчанию используется для 25dp. С Android Marshmallow (API 23) высота была уменьшена до 24dp.
320х480 — 25 пикселей
480×800+ — 38px
он не работал для меня в методе onCreate для активности, но сделал, когда я положил его в onClickListener и дал мне измерение 25
чтобы решить эту проблему, я использовал комбинированный подход. Это необходимо, так как на планшетах системная панель уже вычитает пиксели при отображении.getHeight() называется. Поэтому я сначала проверяю, присутствует ли системная панель, а затем подходит Бен Клейтонс, который отлично работает на телефонах.
высота строки состояния 24dp в android 6.0
вы можете найти ответ в исходном коде: Framework\base\core\res\res\values\dimens.в XML
Переключить Разрешение В Полноэкранном Режиме:
Это решение может выглядеть как обходной путь, но на самом деле он учитывает, является ли ваше приложение полноэкранным (он же скрывает строку состояния) или нет:
таким образом, если ваше приложение в настоящее время полноэкранные, barheight будет равна 0.
лично я должен был использовать это, чтобы исправить абсолютные координаты TouchEvent для учета строки состояния так:
и это получит Абсолют y-координата, будет ли приложение полноэкранным или нет.
на Android 4.1 и выше, вы можете установить содержание вашего приложения, чтобы появиться за строку состояния, так что содержание не изменяет размер, как строка состояния скрывает и показывает. Для этого используйте SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN. Вам также может потребоваться использовать SYSTEM_UI_FLAG_LAYOUT_STABLE, чтобы помочь вашему приложению поддерживать стабильный макет.
при использовании этого подхода вы несете ответственность за обеспечение того, чтобы критические части пользовательского интерфейса вашего приложения (например, встроенные элементы управления в картах применение) не заканчивайте тем, что покрываетесь системными барами. Это может сделать ваше приложение непригодным. В большинстве случаев вы можете справиться с этим, добавив атрибут android:fitsSystemWindows в файл макета XML, установленный в true. Это регулирует заполнение родительской группы просмотра, чтобы оставить место для системных окон. Этого достаточно для большинства приложений.
в некоторых случаях, однако, вам может потребоваться изменить заполнение по умолчанию, чтобы получить желаемый макет для вашего приложения. Непосредственно манипулировать как ваше содержимое раскладывается относительно системных баров(которые занимают пространство, известное как «вставки содержимого» окна), переопределяет fitsystemwindows (вставки Rect). Метод fitSystemWindows () вызывается иерархией представлений при изменении вставок содержимого для окна, чтобы позволить окну соответствующим образом настроить его содержимое. Переопределяя этот метод, вы можете обрабатывать вставки (и, следовательно, макет вашего приложения), однако вы хотеть.
Если вы точно знаете размер высоты против
например, в устройстве с размером экрана 320 X 480 высота строки состояния составляет 25px, для устройства с 480 x 800 высота строки состояния должна быть 38px
тогда вы можете просто получить ширину вашего вида / размер экрана, вы можете просто использовать оператор if else, чтобы получить высоту строки состояния
почему верхний ответ не работает для некоторых людей, потому что вы не можете получить размеры, пока не готова предоставить. Используйте OnGlobalLayoutListener чтобы получить указанные размеры, когда вы действительно можете:
Источник
Высота строки состояния в Android
Какова высота строки состояния в Android? Это всегда то же самое?
Из моих измерений кажется, что это 25dp, но я не уверен, что он имеет одинаковую высоту на всех платформах.
(Я хочу знать это, чтобы правильно реализовать переход с постепенным исчезновением из действия, у которого нет строки состояния, к тому, которое имеет)
на этот вопрос ответили раньше . Высота строки состояния?
Обновление ::
Текущий метод:
Хорошо, высота строки состояния зависит от размера экрана, например, в устройстве с размером экрана 240 x 320 высота строки состояния составляет 20 пикселей, для устройства с размером экрана 320 x 480 высота строки состояния составляет 25 пикселей, для Для устройства с разрешением 480 x 800 высота строки состояния должна составлять 38 пикселей
поэтому я рекомендую использовать этот скрипт, чтобы получить высоту строки состояния
(старый метод), чтобы получить высоту строки состояния для onCreate() метода вашей деятельности, используйте этот метод:
Из всех примеров кода, которые я использовал для получения высоты строки состояния, единственное, что действительно работает в onCreate методе a Activity , это:
Видимо, фактическая высота строки состояния сохраняется как ресурс Android. Приведенный выше код может быть добавлен в ContextWrapper класс (например, an Activity ).
На устройствах MDPI строка состояния составляет 25 пикселей. Мы можем использовать это в качестве основы и умножить на плотность (округлить в большую сторону), чтобы получить высоту строки состояния на любом устройстве:
Для справки: ldpi = 0,75, mdpi = 1, hdpi = 1,5, xhdpi = 2
Жесткое кодирование размера или использование отражения для получения значения status_bar_height считается плохой практикой. Крис Бейнс говорил об этом в Droidcon New York . Рекомендуемый способ получения размера строки состояния — через OnApplyWindowInsetsListener :
Это было добавлено в API 20 и также портировано через ViewAppCompat .
Я объединил несколько решений:
РЕДАКТИРОВАТЬ: альтернатива runJustBeforeBeingDrawn: https://stackoverflow.com/a/28136027/878126
Согласно руководству по дизайну Google ; высота строки состояния 24 дп.
Если вы хотите получить высоту строки состояния в пикселях, вы можете использовать метод ниже:
который можно вызвать из активности с:
Высота по умолчанию была 25dp. С Android Marshmallow (API 23) высота была уменьшена до 24dp.
Обновление: имейте в виду, что с тех пор, как начался возраст надрезов и камер с перфорацией, использование статической высоты для строки состояния больше не работает. Пожалуйста, используйте вместо окна вставки!
это также работает со ссылкой
У меня та же проблема с необходимостью получить высоту строки состояния в onCreate. Это работает для меня.
Официальный рост 24dp , как официально заявлено Google на веб-странице Android Design .
Да, когда я пытаюсь сделать это с помощью View, результат будет 25px. Вот весь код:
240×320 — 20 пикселей
320×480 — 25 пикселей
480×800 + — 38px
он не работал для меня в методе onCreate для действия, но работал, когда я помещал его в onClickListener и дал мне измерение 25
высота строки состояния в Android 6.0 24dp
Вы можете найти ответ в исходном коде: frameworks \ base \ core \ res \ res \ values \ dimensions.xml
Чтобы решить эту проблему, я использовал комбинированный подход. Это необходимо, поскольку на планшетах системная панель уже вычитает свои пиксели при вызове display.getHeight (). Поэтому я сначала проверяю наличие системной панели, а затем подход Бена Клейтона, который отлично работает на телефонах.
Благодаря @Niklas +1 это правильный способ сделать это.
Извините, если код не на 100% правильный, конвертируйте его из Xamarin C #, но это как раз то, что нужно. Работает с надрезами и т. Д.
Toggled Fullscreen Solution:
Это решение может выглядеть как обходной путь, но на самом деле оно учитывает, является ли ваше приложение полноэкранным (то есть скрывающим строку состояния) или нет:
Таким образом, если ваше приложение в настоящее время полноэкранное, barheight будет равно 0.
Лично мне пришлось использовать это, чтобы исправить абсолютные координаты TouchEvent, чтобы учесть статусную строку следующим образом:
И это получит абсолютную координату Y независимо от того, будет ли приложение полноэкранным или нет.
В Android 4.1 и более поздних версиях вы можете настроить отображение содержимого приложения за строкой состояния, чтобы содержимое не изменялось, поскольку строка состояния скрывается и отображается. Для этого используйте SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN. Вам также может понадобиться использовать SYSTEM_UI_FLAG_LAYOUT_STABLE, чтобы помочь вашему приложению поддерживать стабильный макет.
Когда вы используете этот подход, вы несете ответственность за то, чтобы критические части пользовательского интерфейса вашего приложения (например, встроенные элементы управления в приложении Maps) не покрывались системными панелями. Это может сделать ваше приложение непригодным для использования. В большинстве случаев вы можете справиться с этим, добавив атрибут android: fitsSystemWindows в файл макета XML, установив значение true. Это регулирует заполнение родительской ViewGroup, чтобы оставить место для системных окон. Этого достаточно для большинства приложений.
Однако в некоторых случаях вам может потребоваться изменить отступы по умолчанию, чтобы получить желаемый макет для вашего приложения. Чтобы напрямую манипулировать расположением вашего контента относительно системных панелей (которые занимают пространство, известное как «вставки содержимого» окна), переопределите fitSystemWindows (вставки Rect). Метод fitSystemWindows () вызывается иерархией представления, когда вставки содержимого для окна изменились, чтобы позволить окну соответствующим образом корректировать свое содержимое. Переопределив этот метод, вы можете обрабатывать вставки (и, следовательно, макет вашего приложения), как хотите.
Если вы точно знаете размер VS высота
например, в устройстве с размером экрана 320 x 480 высота строки состояния составляет 25 пикселей, для устройства с разрешением 480 x 800 высота строки состояния должна составлять 38 пикселей.
тогда вы можете просто получить ширину вашего вида / размер экрана, вы можете просто использовать оператор if else, чтобы получить высоту строки состояния
Источник
Высота строки состояния в Android
какова высота строки состояния в Android? Это всегда одно и то же?
из моих измерений кажется, что это 25dp, но я не уверен, что он имеет одинаковую высоту на всех платформах.
(Я хочу знать это, чтобы правильно реализовать переход fade от действия, которое не имеет строки состояния к тому, что делает)
19 ответов:
обновление::
текущий метод:
ОК, высота строки состояния зависит от размера экрана, например в устройстве с разрешение 240 x 320 размер экрана статус бар высота 20 пикселей, для устройства с размером 320 x 480 экран статус бар высота-25 пикселей, для устройств с разрешением 480 х 800 состояние высота бруска должна быть 38px
поэтому я рекомендую использовать этот скрипт для получения высоты строки состояния
(старый метод), чтобы получить высоту строки состояния на onCreate() метод вашей деятельности, используйте этот метод:
из всех примеров кода, которые я использовал, чтобы получить высоту строки состояния, единственный, который на самом деле работает в onCreate метод an Activity это:
по-видимому, фактическая высота строки состояния сохраняется в качестве ресурса Android. Приведенный выше код может быть добавлен к ContextWrapper класса (например, Activity ).
на mdpi устройств, в строке состояния-25 пикселей. Мы можем использовать это в качестве основы и умножить его на плотность (округленный вверх), чтобы получить высоту строки состояния на любом устройстве:
для справки: ldpi=.75, mdpi=1, hdpi=1,5, xhdpi=2
Если вы хотите получить высоту строки состояния в пикселях, вы можете использовать следующий метод:
, который может быть вызван из деятельности с:
Я объединил некоторые решения вместе:
жесткое кодирование размера или использование отражения для получения значения status_bar_height считается плохой практикой. Крис Бэйнс говорили об этом в Droidcon Нью-Йорк. Рекомендуемый способ получения размера строки состояния — через OnApplyWindowInsetsListener:
Это было добавлено в API 20, а также обратно через ViewAppCompat.
у меня такая же проблема, чтобы получить высоту строки состояния в onCreate. Это работает для меня.
Да, когда я пытаюсь его с видом он обеспечивает результат 25px. Вот весь код :
официальная высота 24dp , как официально заявляет Google на Веб-страница дизайна Android.
высота по умолчанию используется для 25dp. С Android Marshmallow (API 23) высота была уменьшена до 24dp.
320×480-25px
480×800+ — 38px
это не сработало для меня в методе onCreate для активности, но сделал, когда я положил его в onClickListener и дал мне измерение 25
чтобы решить эту проблему, я использовал комбинированный подход. Это необходимо, так как на планшетах системная панель уже вычитает свои пиксели при отображении.getHeight() называется. Поэтому я сначала проверяю, присутствует ли системная панель, а затем подход Ben Claytons, который отлично работает на телефонах.
высота строки состояния составляет 24dp в android 6.0
вы можете найти ответ в исходном коде: Framework\base\core\res\res\values\dimens.xml
Переключить Разрешение В Полноэкранном Режиме:
Это решение может выглядеть как обходной путь, но на самом деле он учитывает, является ли ваше приложение полноэкранным (он же скрывает строку состояния) или нет:
таким образом, если ваше приложение в настоящее время полноэкранные, barheight будет равна 0.
лично мне пришлось использовать это, чтобы исправить абсолютные координаты TouchEvent для учета строки состояния следующим образом:
и это будет получить Абсолют y-координата, будет ли приложение полноэкранным или нет.
на Android 4.1 и выше вы можете настроить содержимое вашего приложения, чтобы оно отображалось за строкой состояния, чтобы содержимое не изменялось по мере скрытия и отображения строки состояния. Чтобы сделать это, используйте SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN. Вам также может потребоваться использовать SYSTEM_UI_FLAG_LAYOUT_STABLE, чтобы помочь вашему приложению поддерживать стабильный макет.
при использовании этого подхода вы несете ответственность за обеспечение того, чтобы критические части пользовательского интерфейса вашего приложения (например, встроенные элементы управления в Maps применение) не в конечном итоге покрывается системными барами. Это может сделать ваше приложение непригодным для использования. В большинстве случаев вы можете справиться с этим, добавив атрибут android:fitsSystemWindows в свой XML-файл макета, установленный в true. Это позволяет настроить заполнение родительской группы представлений, чтобы оставить место для системных окон. Этого достаточно для большинства приложений.
в некоторых случаях, однако, вам может потребоваться изменить заполнение по умолчанию, чтобы получить желаемый макет для вашего приложения. Чтобы напрямую манипулировать тем, как ваш контент выкладывается относительно системных панелей(которые занимают пространство, известное как «вставки содержимого» окна), переопределяют fitSystemWindows (Rect insets). Метод fitSystemWindows () вызывается иерархией представлений при изменении вставок содержимого для окна, чтобы позволить окну соответствующим образом настроить его содержимое. Переопределив этот метод, вы можете обрабатывать вставки (и, следовательно, макет вашего приложения), однако вы хотеть.
Если вы точно знаете размер высоты против
например, в устройстве с размером экрана 320 X 480 высота строки состояния составляет 25px, для устройства с 480 x 800 высота строки состояния должна быть 38px
тогда вы можете просто получить ширину вашего представления / размер экрана вы можете просто использовать оператор if else, чтобы получить высоту строки состояния
почему верхний ответ не работает для некоторых людей, потому что вы не можете получить размеры, пока не готова предоставить. Используйте OnGlobalLayoutListener сделать измерения, когда вы на самом деле можете:
Источник