【问题标题】:AppBarLayout & NestedScrollView with dynamic content具有动态内容的 AppBarLayout 和 NestedScrollView
【发布时间】:2016-02-11 23:10:50
【问题描述】:

这是描述我的问题的视频: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 的顶部,然后更新NestedScrollViewAppBarLayout 内容时,一切正常。但是当我向下滚动然后尝试更新内容时,AppBarLayout 在我滚动到 NestedScrollView 的顶部之前就坏了。

在更新NestedScrollViewAppBarLayout 之前滚动到NestedScrollView 的顶部,这种方法没有帮助:

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);
    }
}

有什么想法吗?

【问题讨论】:

    标签: android android-toolbar android-appbarlayout


    【解决方案1】:

    有解决办法。在更新NestedScrollViewAppBarLayout 之前,只需在您的AppBarLayout 上调用setExpanded()

    appBarLayout.setExpanded(true, false);
    

    【讨论】:

    • 如果我调用 setExpanded(true, false),appbar 布局保持展开状态,当内容滚动时不会折叠。
    猜你喜欢
    • 2016-03-30
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    相关资源
    最近更新 更多