Make AppBarLayout respond to scrolling in WebView

前端 未结 2 1203
别跟我提以往
别跟我提以往 2021-02-01 08:17

In the design support Library (from I/O) Google introduced the AppBarLayout. I\'m trying to make the Toolbar animate out of the screen when the user scrolls through a website in

相关标签:
2条回答
  • 2021-02-01 08:53

    Things placed inside CoordinatorLayout must be designed and implemented to work with it or it will not coordinate with any other sibling views. But well ... Toolbar is not designed for that. AppBarLayout is just an component that is prepared to make Toolbar works perfectly with CoordinatorLayout.

    LinearLayout is not designed to work with CoordinatorLayout.It is for more easy, you just need to add an attribute to the LinearLayout telling its scroll behavior

    <LinearLayout
    ...
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    ...
    >
    

    you can try make AppBarLayout respond to the WebView by this

    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    

    since ScrollView is now a direct child of CoordinatorLayout.

    <android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
        ...
    </LinearLayout>
    

    ScrollView was not designed to work with CoordinatorLayout (again). You need to use the another one, NestedScrollView, provided in Android Support Library v4, which is designed to work with CoordinatorLayout since born.

    And with the same reason, please note that the classic ListView doesn't work with CoordinatorLayout as well. Only RecyclerView works.

    0 讨论(0)
  • 2021-02-01 08:58

    Thanks to @torque203 for providing this answer. I'm reposting this to gather more attention to it.

    You can extend webview and implement NestedScrollingChild. For example, you can use the NestedWebView object found in this Github project.

    From there on, you can act like it's a normal View that supports Nested Scrolling, like a RecyclerView:

    <your.package.name.NestedWebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    

    In my use case, this worked fine.

    Again, credits to @torque203 for finding this Github project.

    0 讨论(0)
提交回复
热议问题