CollapseToolbarLayout ImageView ist nicht scrollbar

Mit Cheesesquare – Android-Support-Bibliothek Beispiel ist es möglich, die Header ImageView scroll-fähig machen?

 <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="@dimen/detail_backdrop_height" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:fitsSystemWindows="true"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginStart="48dp" app:expandedTitleMarginEnd="64dp"> <ImageView android:id="@+id/backdrop" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:fitsSystemWindows="true" app:layout_scrollFlags="scroll" app:layout_collapseMode="parallax" /> ... </android.support.design.widget.CollapsingToolbarLayout> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> .... 

Beachten Sie, dass ich hinzugefügt hinzugefügt android:fillViewport="true" zu NestedScrollView und auch hinzugefügt app:layout_scrollFlags="scroll" um die ImageView aber beim Versuch, aus dem ImageView nichts passiert.

  • Android-Backup / Wiederherstellung: Wie kann ich eine interne Datenbank sichern?
  • Kennt jemand die Bedeutung des 'top' Befehls in android?
  • Webview shouldOverrideUrlLoading funktioniert in früheren Android-Versionen außer 4.1.x Jellybean
  • Hat android webview Browser html5 Features unterstützt?
  • Erstellen von separaten Android-Modulen mit dexpreopt deaktiviert
  • Warum beendet mein ProgressDialog, wenn ich auf Aktivität klicke?
  • Veraltete Proguard-Datei; Verwenden -keepclasseswithmembers anstelle von -keepclasseswithmembernames
  • DecodeByteArray und copyPixelsToBuffer funktioniert nicht. SkImageDecoder :: Factory zurückgegeben null
  • Wie handle ich mit kein Internet und verlor die Verbindung in Android?
  • Alternative zu showCase-Bibliothek für App-User-Tutorials?
  • Wie füge ich einen Eintrag in den Android Kalender von einer html5 mobilen Webseite hinzu?
  • So legen Sie den Standardwert des Switch-Widgets in Android fest
  • 3 Solutions collect form web for “CollapseToolbarLayout ImageView ist nicht scrollbar”

    OK, ich habe einige Recherchen in den Fehlerberichten gemacht, und das ist ein bekannter Fehler in der Design Support Library .

    Schau dir den Fehlerbericht an

    Auszug

    Ich habe einen Blick auf die Implementierung, die CoordinatorLayout / AppBarLayout / die Behavior etc. unterstützt. Das AppBarLayout verwendet das Verhalten, das in AppBarLayout.Behavior standardmäßig definiert ist. Dies erweitert das ViewOffsetBehavior das wiederum das Behavior . Die Basis- Behavior Klasse hat die Methoden onInterceptTouchEvent() und onTouchEvent() , die beide false zurückgeben (dh "wir wollen keine Touch-Events behandeln"). Diese Methoden werden weder durch ViewOffsetBehavior noch durch AppBarLayout.Behavior außer Kraft AppBarLayout.Behavior , was bedeutet, dass die Berührung unbehandelt bleibt – weshalb es nichts tut.

    Ein möglicher Workaround für Drittanbieter wäre es, AppBarLayout.Behavior zu erweitern und onInterceptTouchEvent() und onTouchEvent() implementieren und die App-Leiste entsprechend zu manipulieren.

    Videos

    Diese zeigen das aktuelle und beabsichtigte Verhalten. Diese sind auch aus dem Fehlerbericht.

    Ich habe einen Workaround gefunden, indem ich die imageView in eine NestedScrollView einbinde:

      <android.support.design.widget.AppBarLayout android:layout_height="wrap_content" android:id="@+id/appbar" android:background="@color/transparent" android:layout_width="match_parent"> <android.support.design.widget.CollapsingToolbarLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/transparent" app:toolbarId="@+id/toolbar" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_collapseMode="parallax" app:layout_scrollFlags="scroll" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <ImageView tools:ignore="UnusedAttribute" tools:src="@drawable/placeholder" android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:adjustViewBounds="true" android:scaleType="centerCrop" android:minHeight="200dp"/> </android.support.v4.widget.NestedScrollView> <android.support.v7.widget.Toolbar android:layout_height="?attr/actionBarSize" android:id="@+id/toolbar" android:elevation="0dp" android:layout_width="match_parent" app:layout_collapseMode="pin"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> 

    Aber ich habe es nicht in Prod getestet, als ich ein anderes Problem mit der Fling-to-Top-Geste traf, die unterbrochen wird, wenn der Recyclerview die Spitze erreicht (wie im Bug Report erklärt).

    Von der Prüfung dieser auf der Unterstützungsbibliothek 23.1.1 scheint dieses Problem behoben zu sein.

     compile 'com.android.support:design:23.1.1' 

    Sie können jetzt in Ihre CollapsingToolbarLayout alles, ImageView, RelativeLayout, TextView und es wird wie gewünscht scrollen.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.