Mam aktywność Androida, która używa CollapsingToolbarLayout wewnątrz CoordinatorLayout, aby uzyskać przewijanie/zwijanie paska narzędzi z obrazem jako tłem/banerem.Ustaw początkową wysokość obrazu paralaksy w CollapsingToolbarLayout
Obraz jest ładowany z internetu i nie znam jego wcześniejszej wielkości.
Początkowo chciałbym, aby pasek narzędzi miał określoną wysokość (160dp), ale jeśli obraz jest większy niż ten, chciałbym wtedy pozwolić użytkownikowi przewinąć jeszcze bardziej, aby odsłonić resztę obrazu. Jednak nie powinno to nigdy nastąpić automatycznie. Stan początkowy wynosi 160 dp, ale użytkownik powinien móc przewinąć go w dół, aby jeszcze bardziej zwiększyć wysokość obrazu.
Nie mogę znaleźć odpowiedniej kombinacji wysokości/minogi, aby to osiągnąć. Czy to w ogóle możliwe?
Oto mój plan:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:background="@color/toolbar_text">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
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"
app:contentScrim="?attr/colorPrimary"
android:fitsSystemWindows="true">
<!-- The background banner -->
<ImageView
android:id="@+id/imgBanner"
android:layout_width="match_parent"
android:layout_height="160dp"
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:layout_collapseMode="pin"
app:theme="@style/AppToolbarTheme" />
</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:layout_gravity="fill_vertical"
android:clipToPadding="false"
app:layout_behavior="@string/appbar_scrolling_view_behavior" >
...
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
</LinearLayout>
Wysokość banera obrazu jest ustawiona na 160dp który kontroluje jak duża pasek narzędzi jest początkowo, ale oczywiście ten sposób nie mogę przedłużyć go poza 160dp ponieważ jest to wysokość widoku.
Próbowałem ustawić wysokość 160dp na CollapsingToolbarLayout
lub AppBarLayout
, ale nic nie pomaga, zawsze jest to maksymalna wysokość 160dp i mogę tylko przewijać go w górę (mniejszy obraz), a nie w dół, nawet jeśli obraz jest znacznie większy i Domyślna wartość to wrap_content
.
Oto rysunek co chcę osiągnąć w przypadku, gdy nie jest jasne:
Próbuję mieć dokładnie to samo. Czy udało Ci się to sprawić? –