Galaxy S10, полноэкранный режим S10+

Как добиться полноэкранного режима с Samsung Galaxy S10 и S10+, у меня не работает следующий код:

getWindow().getDecorView().setSystemUiVisibility(
// Set the content to appear under the system bars so that the
// content doesn't resize when the system bars hide and show.
SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
// Hide the nav bar and status bar
// | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
);

Он скрывает содержимое строки состояния, но не скрывает саму строку состояния :(

Пожалуйста помоги


person Mohamad Bdour    schedule 12.03.2019    source источник


Ответы (3)


Поместите в стиль вашего приложения следующее исправление этой проблемы для меня:

<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>

Подробнее о поддержке выреза см. здесь:

https://developer.android.com/guide/topics/display-cutout

person Mohamad Bdour    schedule 15.03.2019
comment
Обратите внимание, что эта опция доступна только для уровня API 27+, поэтому вам понадобится отдельный файл themes.xml (для уровня API 27+ вам потребуется файл res/values-v27/themes.xml). Android Studio должна предложить вам выполнить этот рефакторинг автоматически и создать файлы для вас, как только вы добавите неподдерживаемое свойство в xml. - person brkeyal; 28.04.2020

Попробуйте создать стиль:

<style 
    name="Theme.AppCompat.Light.NoActionBar.FullScreen" 
    parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

а затем примените тему к своей деятельности:

<activity
   android:name=".MyActivity"
   android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen" 
/>

ОБНОВИТЬ:

Насколько я знаю, Samsung S10 имеет соотношение сторон 19:9 (эквивалентно 2.1). Итак, в своем манифесте добавьте этот тег на свой <application>

<meta-data android:name="android.max_aspect" android:value="2.1" />

Вы также можете попробовать установить resizeableActivity для Activity или Application:

android:resizeableActivity="true"
person Bruno Martins    schedule 12.03.2019
comment
Что ж, попробуйте использовать тот же код на эмуляторе, если он работает, есть что-то конкретное для Galaxy s10, так как это устройство будет выпущено только 4 июня, я мало что могу сделать. Если вы работаете на Samsung, порекомендуйте провести внутреннее исследование. - person Bruno Martins; 13.03.2019
comment
На самом деле S10, S10+ уже выпущены, и я получил один. Как следует из названия вопроса, проблема возникает только на S10, S10+. - person Mohamad Bdour; 13.03.2019
comment
Я отредактировал свой ответ. Вы можете попробовать другой подход. - person Bruno Martins; 13.03.2019
comment
Соотношение сторон 19:9 равно 2,111111111, возможно, вместо этого значение должно быть android:value=2.2. Просто предположение - person Bruno Martins; 13.03.2019
comment
тоже не сработало, я думаю, что это поведение предназначено для Samsung. - person Mohamad Bdour; 13.03.2019
comment
Вы можете проверить другие приложения, такие как Youtube или какую-нибудь игру, чтобы сравнить поведение. - person Bruno Martins; 13.03.2019
comment
Элементы стиля работали у меня на S10e в приложении React Native. Спасибо! - person Ahmet Ardal; 29.10.2019

Из документов, на которые ссылается Мохамад Бдур:

Обратите внимание, что Android может не допускать, чтобы представление содержимого перекрывалось системными панелями. Чтобы переопределить это поведение и принудительно расширить содержимое в область выреза, примените любой из следующих флагов к видимости представления с помощью метода View.setSystemUiVisibility(int):

SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION SYSTEM_UI_FLAG_LAYOUT_STABLE

person Krystian Świętojański    schedule 04.04.2019