Ich habe vor einigen Tagen mein Android-Studio aktualisiert und mit dem CoordinatorLayout und CollapsingToolbarLayout angefangen, nur einige Dinge auszuprobieren.
Es scheint, dass die Symbolleisten-Scrim-Farbe die Anfangsfarbe der Statusleiste und die Scrim-Farbe der Statusleiste außer Kraft setzt (versucht sowohl aus XML als auch aus Code).
ausgangszustand:
begann zu scrollen:
bis zum Einblenden gescrollt:
Die Fragen sind also:
Wie kann ich verhindern, dass die Symbolleiste beim Minimieren die Statusleiste überschreibt (nicht einmal das Bild, das ich kollabiere, um darüber zu gehen)?.
Wie kann ich die Farbe der Statusleiste nach dem Zusammenbruch ändern?
Ein anderes Problem, das ich hatte, war, dass ich der Symbolleiste die ursprüngliche Farbe und nicht nur die Farbe des Scrims gegeben habe, weil ich die Symbolleiste über dem Bild haben wollte. Stattdessen wird sie oben auf dem Bild angezeigt und einige davon sowie alles, was dazu gehört, behandelt dahinter zusammenbrechen
farbe/Stil zur Symbolleiste in der XML-Datei hinzugefügt:
hauptaktivität xml:
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:theme="@style/AppTheme.AppBarOverlay">
<Android.support.design.widget.CollapsingToolbarLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:contentScrim = "?attr/colorPrimary"
app:statusBarScrim="?attr/colorAccent" --------> not changing
Android:id="@+id/my_ctl">
<ImageView
Android:id="@+id/image"
Android:src="@drawable/flights"
Android:layout_width="match_parent"
Android:layout_height="250dp"
Android:scaleType="centerCrop"
Android:fitsSystemWindows="true"
app:layout_collapseMode="parallax"
/>
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:layout_collapseMode="pin" />
</Android.support.design.widget.CollapsingToolbarLayout>
</Android.support.design.widget.AppBarLayout>
<Android.support.v4.widget.NestedScrollView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:clipToPadding="false"
app:layout_behavior="@string/appbar_scrolling_view_behavior" >
<include layout="@layout/content_main" />
</Android.support.v4.widget.NestedScrollView>
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/fab"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="bottom|end"
Android:layout_margin="@dimen/fab_margin"
Android:src="@Android:drawable/ic_dialog_email" />
</Android.support.design.widget.CoordinatorLayout>
Hauptaktivität.Java:
CollapsingToolbarLayout ctl = (CollapsingToolbarLayout) findViewById(R.id.my_ctl);
//ctl.setContentScrimColor(Color.RED);
ctl.setStatusBarScrimColor(Color.BLUE); --------> not working
ctl.setTitle("blabla");
app:statusBarScrim="@Android:color/transparent"
Versuchen Sie, Android:fitsSystemWindows="true"
zu AppBarLayout hinzuzufügen. Es hat für mich funktioniert.
Für Punkt 3: Fügen Sie in der Symbolleiste einen transparenten Hintergrund hinzu
Android: Hintergrund = "@ Android: Farbe/transparent"
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:layout_collapseMode="pin"
Android:background="@Android:color/transparent" />
für 2) gibt es ein bekanntes Problem
im Moment stelle ich die Farbe des Symbolleistenhintergrunds programmatisch ein
mAppBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
@Override
public void onStateChanged(AppBarLayout appBarLayout, State state) {
Toolbar toolbar = (Toolbar) mAppBarLayout.findViewById(R.id.toolbar_top);
int toolbarBackground = (state == AppBarStateChangeListener.State.COLLAPSED) ? R.color.color_collapsed : R.color.color_non_collapsed;
toolbar.setBackgroundColor(ContextCompat.getColor(DealsOptionsActivity.this, toolbarBackground));
}
});
dies ist natürlich eine einfache Implementierung. Sie können es optimieren.
Ich habe nach einer Lösung gesucht und sie gefunden. Richten Sie zunächst das Aktivitätsthema Ihres Computers auf AppThemeNoActionBarLight.SimpleCoordinatorTheme ein
Schau mal:
<!-- Base application theme. -->
<style name="AppThemeNoActionBarLight" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppThemeNoActionBarLight.SimpleCoordinatorTheme">
<item name="Android:windowDrawsSystemBarBackgrounds">true</item>
<item name="Android:statusBarColor">@Android:color/transparent</item>
</style>
Dann probieren Sie dieses Layoutbeispiel:
<?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"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@Android:color/background_light"
Android:fitsSystemWindows="true"
>
<Android.support.design.widget.AppBarLayout
Android:id="@+id/main.appbar"
Android:layout_width="match_parent"
Android:layout_height="300dp"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
Android:fitsSystemWindows="true"
>
<Android.support.design.widget.CollapsingToolbarLayout
Android:id="@+id/main.collapsing"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp"
app:title="@string/app_name"
>
<ImageView
Android:id="@+id/main.backdrop"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:scaleType="centerCrop"
Android:fitsSystemWindows="true"
Android:src="@drawable/material_flat"
app:layout_collapseMode="parallax"
tools:ignore="ContentDescription"
/>
<Android.support.v7.widget.Toolbar
Android:id="@+id/main.toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:title="Test"
/>
</Android.support.design.widget.CollapsingToolbarLayout>
</Android.support.design.widget.AppBarLayout>
<Android.support.v4.widget.NestedScrollView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:textSize="20sp"
Android:lineSpacingExtra="8dp"
Android:text="@string/lorem"
Android:padding="@dimen/activity_horizontal_margin"
/>
</Android.support.v4.widget.NestedScrollView>
<Android.support.design.widget.FloatingActionButton
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:layout_margin="@dimen/activity_horizontal_margin"
Android:src="@drawable/ic_comment_24dp"
app:layout_anchor="@id/main.appbar"
app:layout_anchorGravity="bottom|right|end"
/>