這裏的食譜:
如果設置android:minHeight
,該AppBarLayout
將尊重不滾動超出這將使你的組件更小的點值。所以你的XML佈局可能是這樣的:你希望你的註冊類與父AppBarLayout
一個OnOffsetChangedListener
<com.example.CustomCollapsingLayout
android:layout_width="match_parent"
android:layout_height="320dp"
android:minHeight="108dp"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
下一步。隨着應用欄的滾動,您的組件將獲得事件,以便您知道如何配置視圖。
class OnOffsetChangedListener implements AppBarLayout.OnOffsetChangedListener {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
final int scrollRange = appBarLayout.getTotalScrollRange();
float offsetFactor = (float) (-verticalOffset)/(float) scrollRange;
...
此說明了如何找到的總滾動範圍,然後找到的總滾動範圍和當前的滾動位置即之間的比率,其中應用欄處於其滾動。
你應該做什麼CollapsingToolbarLayout
確實;覆蓋onAttachedToWindow
並添加監聽器有:
// Add an OnOffsetChangedListener if possible
final ViewParent parent = getParent();
if (parent instanceof AppBarLayout) {
if (mOnOffsetChangedListener == null) {
mOnOffsetChangedListener = new OnOffsetChangedListener();
}
((AppBarLayout) parent).addOnOffsetChangedListener(mOnOffsetChangedListener);
}
看看在source code for CollapsingToolbarLayout
因爲它會給你一些想法。你的觀點需要做很多相同的事情。
你也可以看看有可以擴展和移動的工具欄滾動的圖像我的樣本項目:https://github.com/klarson2/Collapsing-Image
這工作,謝謝。我讀過關於exitUntilCollapsed的消息,但是誤解了它。 – HansG600