Как добиться полноэкранного режима с 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
);
Он скрывает содержимое строки состояния, но не скрывает саму строку состояния :(
Пожалуйста помоги
Попробуйте создать стиль:
<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"
На самом деле S10, S10+ уже выпущены, и я получил один. Как следует из названия вопроса, проблема возникает только на S10, S10+.
Я отредактировал свой ответ. Вы можете попробовать другой подход.
Соотношение сторон 19:9 равно 2,111111111, возможно, вместо этого значение должно быть android:value = "2.2". Просто предположение
тоже не сработало, я думаю, что это поведение предназначено для Samsung.
Вы можете проверить другие приложения, такие как Youtube или какую-нибудь игру, чтобы сравнить поведение.
Элементы стиля работали у меня на S10e в приложении React Native. Спасибо!
Поместите в стиль вашего приложения следующее исправление этой проблемы для меня:
<item name = "android:windowLayoutInDisplayCutoutMode">shortEdges</item>
Подробнее о поддержке выреза см. здесь:
https://developer.android.com/guide/topics/display-cutout
Обратите внимание, что эта опция доступна только для уровня API 27+, поэтому вам понадобится отдельный файл themes.xml (для уровня API 27+ вам потребуется файл res/values-v27/themes.xml). Android Studio должна предложить вам выполнить этот рефакторинг автоматически и создать файлы для вас, как только вы добавите неподдерживаемое свойство в xml.
Из документов, на которые ссылается Мохамад Бдур:
Note that Android might not allow the content view to overlap the system bars. To override this behavior and force content to extend into the cutout area, apply any of the following flags to the view visibility via the View.setSystemUiVisibility(int) method:
SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION SYSTEM_UI_FLAG_LAYOUT_STABLE
Что ж, попробуйте использовать тот же код на эмуляторе, если он работает, есть что-то конкретное для Galaxy s10, так как это устройство будет выпущено только 4 июня, я мало что могу сделать. Если вы работаете на Samsung, порекомендуйте провести внутреннее исследование.