Прозрачная строка состояния Android
Я старался
установка statusBarColor на прозрачный, но оставляет тень
устанавливая windowTranslucentStatus в true, но он оставляет тень
смешал и сопоставил вышеуказанные свойства с fitsSystemWindow... безуспешно
выполнение следующих действий позволяет достичь цели полностью прозрачного статуса... но также делает панель навигации полностью прозрачной
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = getWindow(); // in Activity's onCreate() for instance
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
Как я могу сделать только строку состояния 100% прозрачной, не касаясь navBar
minSdk: 21
цель: 26
составить 26
Предварительный просмотр студии Android 3.0 (последняя на 6/6/17)
3 ответа
Я думаю, что вы не можете сделать строку состояния прозрачной на 100%, потому что у активности есть собственный фон окна (фон по умолчанию белый, вы можете установить фон окна, используя getWindow(). SetBackgroundDrawableResource(int resID) или getWindow(). SetBackgroundDrawable(Drawable drawable))
Вы можете установить цвет в строке состояния и установить непрозрачность цвета в шестнадцатеричной форме после setContentView(), показанного в приведенном ниже коде.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(Color.parseColor("#00FFFFFF"));
}
//Here "#00FFFFFF" means opacity is 0% (first two digits 00) and colour is white (next FFFFFF character).
Или в файле styles.xml (только для версий после Lollipop. Совместимость может быть нарушена)
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
Для настройки непрозрачности обратитесь по этой ссылке
Используйте этот шестнадцатеричный цвет #00000000 в строке состояния
Я просто сделал то же самое в тех же условиях
Вы правы насчет FLAG_LAYOUT_NO_LIMITS, но это так (код на kotlin)
//onCreate
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
toolbar.setPadding(0, getStatusBarHeight(), 0, 0)
getStatusBarHeight:
private fun getStatusBarHeight(): Int {
var result = 0
val resourceId = resources.getIdentifier("status_bar_height", "dimen", "android")
if (resourceId > 0) {
result = resources.getDimensionPixelSize(resourceId)
}
return result
}
и как вернуть панель навигации - поместите это в ваши стили:
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>