2017-02-04 10 views
0

Я устраиваю мобильное приложение для Android и используя AppCompat. Это работает Android 6.0, которая является API 23.Строка состояния меняет цвет на «windowBackground» вместо использования «colorPrimaryDark»

Вот мой AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="FeedingTime.FeedingTime" android:versionCode="1" android:versionName="1.0" android:installLocation="auto"> 
    <uses-sdk /> 
    <application android:icon="@drawable/Icon" android:label="Feeding Time" android:theme="@style/AppTheme"> 
    </application> 
</manifest> 

Вот мой style.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="android:windowTranslucentStatus">true</item> 

    <item name="android:windowBackground">@color/background_color</item> 

    <item name="colorPrimary">#6497b1</item> 
    <item name="colorPrimaryDark">#005b96</item> 
    </style> 

Вот XML макета активность где существует проблема:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 
    <include 
     android:id="@+id/toolbarHistoryActivity" 
     layout="@layout/toolbar" /> 
    <ListView 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="4" 
     android:id="@+id/listViewHistory" /> 
    <Button 
     android:text="Clear History" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:id="@+id/btnClearHistory" /> 
</LinearLayout> 

У меня проблема, у меня дома creen, цвет строки состояния установлен на синий, как и ожидалось, но когда я открываю второе действие, моя строка состояния меняет цвет, он больше не использует «colorPrimaryDark», а скорее более темную версию цвета, который у меня есть в «windowBackground».

Почему?

+0

разместить свой файл манифеста, как хорошо! – OBX

ответ

1

Добавить Coordinatorlayout как корень и использовать android:fitsSystemWindows="true"

вместо того, чтобы Linearlayout

<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" 
android:fitsSystemWindows="true"> 

вы также можете programetically установить StatusBar цвет в вашем Activity:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
getWindow().setStatusBarColor(getResources().getColor(R.color.your_color)); //change color here 
} 
+0

Я изменил корень на «android.support.v4.widget.DrawerLayout», и теперь он работает, спасибо вам за предложение. –