Как называется эта штука , которая находиться вверху toolbar, и как менять её цвет при переходе на разные фрагменты?

Я хотел бы узнать название этого элемента, выше toolbar с примером код, где её цвет будет меняться в зависимости от фрагмента.

введите сюда описание изображения2vx1.png


Ответы (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. Ответ отсюда

→ Ссылка
Автор решения: SurfaceStack

Эта штука называется строкой состояния.

Изменить цвет как-то так:

<resources>

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    <!-- Цвет строки состояния -->

    <item name="colorPrimaryDark">@color/primaryColorDark</item>
</style>

P.S. Источник.

→ Ссылка
Автор решения: Andrew

Это называется 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")

вот здесь есть хороший туториал по вашему вопросу

→ Ссылка