2

У меня есть сворачивающаяся панель инструментов, но я не могу ради любви понять, почему она не меняется на цвет, который я хочу, так как он рушится ... Вот мой 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.support.design.widget.AppBarLayout 
     android:id="@+id/appBar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/FrontierTheme"> 
     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      app:expandedTitleMarginEnd="64dp" 
      app:expandedTitleMarginStart="48dp"> 
      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="200dp" 
       android:scaleType="centerCrop" 
       app:layout_collapseMode="parallax" 
       android:src="@drawable/background" 
       android:id="@+id/profileView_imageView"/> 
      <android.support.v7.widget.Toolbar 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:app="http://schemas.android.com/apk/res-auto" 
       android:layout_width="match_parent" android:layout_height="wrap_content" 
       android:id="@+id/toolbarProfileViewID" 
       android:minHeight="?attr/actionBarSize" 
       app:theme="@style/FrontierTheme" 
       app:layout_collapseMode="pin"> 
      </android.support.v7.widget.Toolbar> 
     </android.support.design.widget.CollapsingToolbarLayout> 
     <android.support.design.widget.TabLayout 
      android:id="@+id/tabLayout" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:layout_gravity="bottom" 
      android:background="@color/mainColor" 
      app:tabMode="scrollable" 
      app:tabTextColor="@color/white"/> 
    </android.support.design.widget.AppBarLayout> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/tab_viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 
</android.support.design.widget.CoordinatorLayout> 

Вот мой styles.v21 (я не имею что-нибудь в обычный файл styles.xml)

<style name="FrontierTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="android:colorPrimary">#5F021F</item> 
     <item name="android:colorPrimaryDark">#5E152C</item> 
     <item name="android:colorAccent">#BCBCBC</item> 
     <item name="android:textColor">#FFFFFF</item> 
    </style> 

И вот мой андроид манифеста.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    package="com.daprlabs.swipedeck" > 
<uses-sdk 
     android:minSdkVersion="7" 
     android:targetSdkVersion="23" /> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:largeHeap="true" 
     android:supportsRtl="true" 
     android:theme="@style/FrontierTheme" 
     android:name=".ApplicationEnvironment"> 
     <activity 
      android:name=".ActivityCenter"> <!--android:theme="@style/TestTheme" --> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
<activity android:name=".ProfileView.ProfileView" 
      android:label="Frontier" /> 
    </application> 

</manifest> 

В настоящее время, когда он падает, цвет белый ... Но я хочу, чтобы это шестнадцатеричный: #5F021F

+0

Его работы отлично. Отъезд [здесь] (https://stackoverflow.com/questions/30619598/android-material-design-how-to-change-background-color-of-toolbar-after-collap/47628602#47628602) –

ответ

11

добавить addOnOffsetChangedListener слушателя в AppBarLayout знать, если это коллапс или нет, и измените цвет, используя setBackgroundColor. Примерно:

//Set a listener to know the current visible state of CollapseLayout 
appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { 
    int scrollRange = -1; 

    @Override 
    public void onOffsetChanged(final AppBarLayout appBarLayout, int verticalOffset) { 
     //Initialize the size of the scroll 
     if (scrollRange == -1) { 
      scrollRange = appBarLayout.getTotalScrollRange(); 
     } 
     //Check if the view is collapsed 
     if (scrollRange + verticalOffset == 0) { 
      toolbar.setBackgroundColor(ContextCompat.getColor(mContext, R.color.YOUR_COLLAPSED_COLOR)); 
     }else{ 
      toolbar.setBackgroundColor(ContextCompat.getColor(mContext, R.color.OTHER_COLOR)); 
     } 
    } 
}); 
+0

Спасибо, приятель это сделал трюк! – TheQ