Hier ist das Rezept:
Wenn Sie android:minHeight
gesetzt ist, wird der AppBarLayout
diesen Wert achten, indem sie nicht über den Punkt hinaus scrollen, die Ihre Komponente kleiner machen würde. So Ihr XML-Layout könnte wie folgt sein:
<com.example.CustomCollapsingLayout
android:layout_width="match_parent"
android:layout_height="320dp"
android:minHeight="108dp"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
Weiter Sie Ihre Klasse ein OnOffsetChangedListener
mit der Mutter AppBarLayout
registrieren haben wollen. Ihre Komponente erhält Ereignisse, wenn die App-Leiste gescrollt wird, damit Sie wissen, wie Sie Ihre Ansicht konfigurieren.
class OnOffsetChangedListener implements AppBarLayout.OnOffsetChangedListener {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
final int scrollRange = appBarLayout.getTotalScrollRange();
float offsetFactor = (float) (-verticalOffset)/(float) scrollRange;
...
Dies zeigen Ihnen, wie den gesamten Scroll-Bereich zu finden und dann das Verhältnis zwischen dem Gesamt Scroll-Bereich und der aktuellen Bildlaufposition das heißt, wo die App-Leiste in seiner Rolle ist.
Sie sollten tun, was CollapsingToolbarLayout
tut; außer Kraft setzen onAttachedToWindow
und fügen Sie dort den Hörer:
// Add an OnOffsetChangedListener if possible
final ViewParent parent = getParent();
if (parent instanceof AppBarLayout) {
if (mOnOffsetChangedListener == null) {
mOnOffsetChangedListener = new OnOffsetChangedListener();
}
((AppBarLayout) parent).addOnOffsetChangedListener(mOnOffsetChangedListener);
}
am source code for CollapsingToolbarLayout
Werfen Sie einen Blick, wie es Ihnen einige Ideen geben. Ihre Ansicht muss viele der gleichen Dinge tun.
Sie können auch an meinem Beispielprojekt aussehen, die ein Bild hat, die als die Symbolleiste skaliert und bewegt gescrollt wird: https://github.com/klarson2/Collapsing-Image
, dass dank funktioniert. Ich hatte über exitUntilCollapse gelesen, aber es falsch verstanden. – HansG600