web-dev-qa-db-de.com

CollapsingToolBarLayout - Die Farbe der Statusleiste ändert sich nicht

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:

 initial state:


begann zu scrollen:

 started scrolling


bis zum Einblenden gescrollt:

 scrolled until collapsing


Die Fragen sind also:

  1. Wie kann ich verhindern, dass die Symbolleiste beim Minimieren die Statusleiste überschreibt (nicht einmal das Bild, das ich kollabiere, um darüber zu gehen)?.

  2. 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:

 added colour/style to the toolbar in the xml


  1. Gibt es eine Möglichkeit, die Symbolleiste von Anfang an über dem Bild zu platzieren und das Bild einfach zu reduzieren? (Denken Sie daran, die Werkzeugleiste vor dem Bild festgehalten zu halten und das Rahmenlayout zu aktivieren, aber es wird immer noch im Statusleistenbereich kollabieren. Dies ist die Hauptfrage.)

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");
18
Roee
app:statusBarScrim="@Android:color/transparent"
27
wklbeta

Versuchen Sie, Android:fitsSystemWindows="true" zu AppBarLayout hinzuzufügen. Es hat für mich funktioniert.

5
Vineet Ashtekar

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" />
1
Allan Ramírez

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.

1
kingston

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"
    />
0
Taras Vovkovych