Это решение, которое я использовал для тестирования на Android 10 и других версиях, поэтому проверьте, поможет ли оно.
В своем styles.xml
создайте пользовательскую тему, вы можете установить родительскую тему в соответствии с темой вашего приложения, если она имеет какой-либо из NoActionBar (AppCompat/DayNight/material и т. д.), установленный в качестве родительского, или установить его напрямую (поскольку без NoActionBar по умолчанию будет генерироваться сверху), основным требованием являются следующие три строки:
<style name="CustomTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentStatus">false</item>
<item name="android:statusBarColor">#00000000</item>
</style>
Вы можете проверить документацию для statusBarColor, если хотите, в основном говорит вам, что нужно сделать.
Цвет строки состояния. Если цвет не непрозрачный, попробуйте установить {@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_STABLE} и {@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN}. Чтобы это вступило в силу, окно должно отображать фон системной панели с помощью {@link android.R.attr#windowDrawsSystemBarBackgrounds}, а строка состояния не должна быть запрошена как полупрозрачная с помощью {@link android.R.attr#windowTranslucentStatus. }. Соответствует {@link android.view.Window#setStatusBarColor(int)}.
Так что просто установите прозрачный цвет или любой цвет, который вы хотите установить в строке состояния в соответствии с вашими требованиями. И установите эту тему на желаемую активность.
Теперь в действии создайте этот метод, как показано ниже:
private void showCustomUI() {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
Это те флаги, которые вам нужны, не добавляйте View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
при установке флагов, так как он скрывает панель навигации, которую вы хотите показать.
Вам нужно будет вызвать метод, иначе строка состояния не будет создана должным образом.
Итак, попробуйте это и дайте мне знать, если это сработало для вас.
РЕДАКТИРОВАТЬ: Не забудьте удалить флаги FLAG_LAYOUT_NO_LIMITS
, если они у вас есть, так как это создаст проблемы. Вот что я получил при тестировании Android 10.
person
ljk
schedule
12.02.2020