AppBarLayout&带有动态内容

时间:2016-02-11 23:10:51

标签: android android-toolbar android-appbarlayout

以下是描述我的问题的视频:click

当前布局xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    ... >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorPrimary"
        android:animateLayoutChanges="true"
        app:title="@string/app_name"
        app:theme="@style/Toolbar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
        app:layout_scrollFlags="scroll|enterAlwaysCollapsed|snap"/>

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/coordinator_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v4.widget.NestedScrollView
            android:id="@+id/content"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fillViewport="true"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

        <android.support.design.widget.AppBarLayout
            android:id="@+id/app_bar_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:animateLayoutChanges="true">

        </android.support.design.widget.AppBarLayout>

        ...

    </android.support.design.widget.CoordinatorLayout>

</LinearLayout>

ViewAppBarLayout在执行时动态添加。 当我滚动到ScrollView的顶部,然后更新NestedScrollView&amp; AppBarLayout内容,一切正常。但是当我向下滚动然后尝试更新内容时,AppBarLayout在我滚动到NestedScrollView的顶部之前就已打破。

在更新NestedScrollView之前滚动到NestedScrollView的顶部AppBarLayout使用此方法无效:

public void scrollContentToTop() {
    CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
    AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
    if (behavior != null) {
        behavior.onNestedFling(coordinatorLayout, appBarLayout, null, 0, 0, true);
    }
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

有解决方案。在更新NestedScrollView&amp;之前AppBarLayout只需拨打setExpanded()

上的AppBarLayout即可
appBarLayout.setExpanded(true, false);