Как изменить цвет строки состояния в Android

? codercat @ | Original: StackOverFlow
---

Прежде всего, его не дубликаты из http://stackoverflow.com/questions/9044970/how-to-change-the-background-color-of-android-status-bar

Как я могу изменить в строке состояния цвет, какой цвет имеют в навигационной панели.

я хочу, чтобы в строке состояния цвета на основе навигационных бар цвета

Как изменить цвет строки состояния в Android

---

Top 5 ответ

1codercat @

Update:

Lollipop:

public abstract void setStatusBarColor (int color)

Добавлено в уровне 21 API

Устанавливает цвет в строке состояния . Для того чтобы этот эффект ,окно должно быть рисунок системы адвокатуры фоны с FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS и FLAG_TRANSLUCENT_STATUS не должны быть установлены. Если не непрозрачная структура, рассмотреть вопрос о создании SYSTEM_UI_FLAG_LAYOUT_STABLE и SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN .

offcial : http://developer.android.com/reference/android/view/Window.html#setStatusBarColor(int )

Пример: http://antonioleiva.com/material-design-everywhere/

https://chris.banes.me/2014/10/17/appcompat-v21/

Как изменить цвет строки состояния в Android

TransitionName для просмотра фоне будет " Android : состояние : фон " .

Это возможно только KITKAT и после .

Применить фон тонировка на Android UI системы при использовании KITKAT полупрозрачные режимов .

Как изменить цвет строки состояния в Android

https://github.com/jgilfelt/SystemBarTint

2Giorgio @

Android 5.0 Lollipop представил тему подбора материала, который автоматически цветав строке состояния на основе значения ColorPrimaryDark темы.

This is supported on device pre-lollipop thanks to the library support-v7-appcompat starting from version 21. https://chris.banes.me/2014/10/17/appcompat-v21/

Как изменить цвет строки состояния в Android

https://developer.android.com/preview/material/theme.html

3itzhar @

это очень простой способ сделать это без каких-либо библиотеки : Есливерсия ОС не поддерживается - под KitKat - так ничего и не случилось . Я делаю это шаги :

in my xml i added to the top this View:
<View
        android:id="@+id/statusBarBackground"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

Тогда я сделал этот метод:

 public void setStatusBarColor(View statusBar,int color){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
           Window w = getWindow();
           w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
           //status bar height
           int actionBarHeight = getActionBarHeight();
           int statusBarHeight = getStatusBarHeight();
           //action bar height
           statusBar.getLayoutParams().height = actionBarHeight + statusBarHeight;
           statusBar.setBackgroundColor(color);
     }
}

Также Вы нужны те оба метода, чтобы получить Action Bar & Amp; Статус высота бар:

public int getActionBarHeight() {
    int actionBarHeight = 0;
    TypedValue tv = new TypedValue();
    if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
    {
       actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
    }
    return actionBarHeight;
}

public int getStatusBarHeight() {
    int result = 0;
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

тоединственное, что вам нужно, это линия, чтобы установить статус бар цвет:

setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));
4Niels @

Поместите это ваш ценностях v21 / styles.xml, для того, чтобы это на Lollipop :

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_secondary</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="android:statusBarColor">@color/color_primary</item>
    </style>
</resources>
5mklimek @

Чтобы изменить статус бар цвет в API 21 и выше, используются http://developer.android.com/reference/android/view/Window.html#setStatusBarColor(int ) . По Javadoc, мы также должны установить некоторые флаги на окне.

Работа фрагмент кода:

Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(activity.getResources().getColor(R.color.example_color));