Как называется эта штука , которая находиться вверху toolbar, и как менять её цвет при переходе на разные фрагменты?
Я хотел бы узнать название этого элемента, выше toolbar с примером код, где её цвет будет меняться в зависимости от фрагмента.
Ответы (3 шт):
Это называется status bar (строка состояния).
API level 21
В Android Lollipop (API level 21) можно изменить цвет строки состояния с помощью window.setStatusBarColor().
Для изменения цвета строки состояния также необходимо установить два дополнительных флажка в окне: добавить FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS и сбросить FLAG_TRANSLUCENT_STATUS.
import android.view.Window;
Window window = activity.getWindow();
//сбросить FLAG_TRANSLUCENT_STATUS
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//добавить FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
//собственно, цвет строки состояния
window.setStatusBarColor(ContextCompat.getColor(activity, R.color.my_statusbar_color));
API level <21
Только при пересоздании активности.
Просто создайте новую тему в res/values/styles.xml, где вы измените colorPrimaryDark, который является цветом строки состояния:
<style name="AppTheme.GrayStatusBar" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimaryDark">@color/colorGray</item>
</style>
И измените тему действия в AndroidManifest.xml на ту, которую хотите, в следующем действии вы можете изменить цвет обратно на исходный, выбрав исходную тему:
<activity
android:name=".LoginActivity"
android:theme="@style/AppTheme.GrayStatusBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Вот как должен выглядеть ваш файл res/values /colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#c6d6f0</color>
<color name="colorGray">#757575</color>
</resources>
И в активности до setContentView
setTheme(android.R.style.Theme_Dark);
P.S. Ответ отсюда
Эта штука называется строкой состояния.
Изменить цвет как-то так:
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Цвет строки состояния -->
<item name="colorPrimaryDark">@color/primaryColorDark</item>
</style>
P.S. Источник.
Это называется Status Bar. Вот например изменение цвета:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.BLUE);
}
например можно создать метод в активности:
public void updateStatusBarColor(String color){// hexadecimal fromat
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.parseColor(color));
}
}
и вызывать в фрагменте:
((ActivityName)getActivity()).updateStatusBarColor("#000000")
вот здесь есть хороший туториал по вашему вопросу
