2016-03-25 5 views
0

Мне удалось сделать панель состояния полупрозрачной, и теперь я столкнулся с проблемой с ее цветом. По какой-то причине строка состояния имеет тот же цвет, что и панель инструментов при прокрутке вверх.Android, панель инструментов и строка состояния имеют одинаковый цвет

enter image description here

DetailsActivity.xml:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    android:background="@color/md_grey_200"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="260dp" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     android:fitsSystemWindows="true" 
     app:layout_behavior="com.my.package.FlingBehavior"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginEnd="64dp" 
      app:expandedTitleMarginStart="48dp" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      app:titleEnabled="true" 

      <ImageView 
       android:id="@+id/backdrop" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scaleType="centerCrop" 
       app:layout_collapseMode="parallax" /> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="76dp" 
       android:paddingTop="24dp" 
       app:layout_collapseMode="pin" 
       android:fitsSystemWindows="false" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

     </android.support.design.widget.CollapsingToolbarLayout> 

    </android.support.design.widget.AppBarLayout> 

    <RecyclerView 
     android:id="@+id/details_recyclerview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_margin="10dp" 
     /> 

</android.support.design.widget.CoordinatorLayout> 

стили-v21:

<style name="MyFinalTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- ...and here we setting appcompat’s color theme attrs --> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/primary</item> 
    <item name="android:statusBarColor">@color/primary_dark</item> 
</style> 

Это то, что я использую, чтобы сделать строку состояния полупрозрачными:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    Window w = getWindow(); 
    w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 
} 

Я попытался изменить цвет строки состояния на primary_dark в стилях-v21, но это не сработало. Ни имеет это:

w.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
      w.setStatusBarColor(Color.BLUE); 

colors.xml, в соответствии с просьбой:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="colorPrimary">#00b386</color> 
    <color name="colorPrimaryDark">#008060</color> 
    <color name="colorAccent">#00e6ac</color> 
</resources> 

Что мне не хватает?

+0

какой цвет вы хотите изменить и к какому цвету. пожалуйста уточни. разместите свой цвет.xml здесь. –

+0

Я хочу изменить цвет строки состояния на более темный зеленый чирок. Я добавил colors.xml – Alec

ответ

0

Изменить этот цвет и посмотреть, что произойдет

<item name="colorAccent">@color/primary</item> 

с

<item name="colorAccent">@color/black</item> 

или вы можете использовать тему, как, как показано ниже

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 
+0

Ничего не происходит .... – Alec

+0

Вы не соответствуете цвету, например colorAccent = primary, а также colorPrimary = primary? –

+0

Да, но я не думаю, что это проблема. – Alec

0

Я думаю, вы можете добавить его в ваш указанный Деятельность в пакете стиля-21!

<item name="android:statusBarColor">@android:color/transparent</item> 

и я вижу, что вы установите это ваш CoordinatorLayout, это означает, что эта точка зрения будет FULL_SCREEN, поэтому, когда салфетки вверх, STATUSBAR покажет фон панели инструментов, потому что это прозрачный ..

android:fitsSystemWindows="true" 

надежду чтобы помочь ..

+0

Извините, но он не работает. – Alec

0

Изменить

<style name="MyFinalTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- ...and here we setting appcompat’s color theme attrs --> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/primary</item> 
    <item name="android:statusBarColor">@color/primary_dark</item> 
</style> 

в

<style name="MyFinalTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- ...and here we setting appcompat’s color theme attrs --> 
    <item name="android:colorPrimary">@color/primary</item> 
    <item name="android:colorPrimaryDark">@color/primary_dark</item> 
    <item name="android:colorAccent">@color/primary</item> 
    <item name="android:statusBarColor">@color/primary_dark</item> 
</style> 

Я надеюсь, что это поможет.

+0

Делает это хуже, панель инструментов и строка состояния теперь белые. – Alec

+0

объявили те в стиле-v21? –

+0

Да, в стилях-v21/v22 и v23 – Alec

0

Я думаю, что у вас есть неправильная концепция об этой раскраски. я хотел бы объяснить вам его принципы.

в цветах.xml у вас обычно есть 3 цвета, начиная с любого приложения для Android.они -

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<color name="colorPrimary">#3F51B5</color> 
<color name="colorPrimaryDark">#12AE90</color> 
<color name="colorAccent">#FF4081</color> 
</resources> 
  • colorPrimaryDark

это цвет, который является верхним цветом в вашей деятельности, и это бар, который содержит данные сети, время и все другие интересные вещи. если вы хотите изменить его цвет, измените соответствующий цветовой код в color.xml.

  • colorPrimary

это цвет заголовка, и это содержит название приложения или активность name.if вы хотите изменить цвет, то изменить соответствующий код цвета в color.xml.

  • colorAccent

это цвет элементов внутри вашей деятельности как кнопки и EditText и т.д., если вы хотите изменить его цвет, то изменить соответствующий код цвета в color.xml.

код цвета для различных цветов можно найти here.

Я думаю, что мой ответ решает ваш вопрос. пожалуйста, дайте мне знать, если это так.

+0

Не работает. Я изменил все 3 цвета, проверьте мои цвета.xml – Alec

1

Проблема решена!

1. я удалил эти строки:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    Window w = getWindow(); 
    w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 
} 

2. я добавил android:fitsSystemWindows="true" к ImageView, например, так:

<ImageView 
    android:id="@+id/backdrop" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    android:scaleType="centerCrop" 
    app:layout_collapseMode="parallax" /> 

3. изменил statusBarColor к прозрачному :

<item name="android:statusBarColor">@color/transparent</item> 
Смежные вопросы