Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch to NestedScrollView #23490

Closed
wants to merge 2 commits into from
Closed

Conversation

alexandrius
Copy link

@alexandrius alexandrius commented Feb 16, 2019

Summary

Fixes bug described at #22925

Changelog

ReactScrollView extends NestedScrollView instead of normal ScrollView

[Android] [Changed] - Switch to NestedScrollView to fix Scrolling issue on AOSP ROMS

Test Plan

AOSP based rom needs to be installed on the phone.

@facebook-github-bot
Copy link
Contributor

Thank you for your pull request and welcome to our community. We require contributors to sign our Contributor License Agreement, and we don't seem to have you on file. In order for us to review and merge your code, please sign up at https://code.facebook.com/cla. If you are contributing on behalf of someone else (eg your employer), the individual CLA may not be sufficient and your employer may need the corporate CLA signed.

If you have received this in error or have any questions, please contact us at cla@fb.com. Thanks!

@facebook-github-bot facebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Feb 16, 2019
@facebook-github-bot
Copy link
Contributor

Thank you for signing our Contributor License Agreement. We can now accept your code for this (and any) Facebook open source project. Thanks!

Copy link
Contributor

@dulmandakh dulmandakh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@dulmandakh
Copy link
Contributor

There is the excerpts from the documentation

NestedScrollView is just like ScrollView, but it supports acting as both a nested scrolling parent and child on both new and old versions of Android. Nested scrolling is enabled by default.

Copy link
Contributor

@cpojer cpojer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@facebook-github-bot facebook-github-bot added the Import Started This pull request has been imported. This does not imply the PR has been approved. label Feb 18, 2019
Copy link
Contributor

@facebook-github-bot facebook-github-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cpojer is landing this pull request. If you are a Facebook employee, you can view this diff on Phabricator.

@cpojer
Copy link
Contributor

cpojer commented Feb 18, 2019

Are there other behavior changes that come with this? Right now this is failing internally by an end-to-end test that tests whether the view can be scrolled down properly.

@alexandrius
Copy link
Author

There shouldn't be. Some method modifiers are different. What is cause of e2e test fail?

@cpojer
Copy link
Contributor

cpojer commented Feb 18, 2019

We have an internal test like this:

it(
      'Tests that we scroll down and find expected component',
      async (expect, scenario) => {
        await scenario
          .waitTillLaunched()
          .then(screen => screen.selectUniqueMainView())
          .then(mainView => mainView.goToScrollingScreen())
          .then(scrollingScreen => scrollingScreen.selectUniqueScrollingView())
          .then(scrollingView => scrollingView.scrollDownToCell(50));
      },
    )

it seems that it doesn't scroll down with this change applied. Note that this is a custom framework and the APIs probably don't translate to open source solutions but maybe it gives you an idea about what could be wrong.

@alexandrius
Copy link
Author

I highly doubt that it doesn't scroll to the requested coordinate.
test might fail if the test expects ScrollView component instead of ReactScrollView.

@cpojer
Copy link
Contributor

cpojer commented Feb 18, 2019

Ah yeah, I bet that's the case. I can investigate soon and see if I can fix it.

@cpojer
Copy link
Contributor

cpojer commented Feb 18, 2019

I gave this another look and it doesn't seem like it's an issue with the test framework or locating the scroll view component. I then took another look at the source for ScrollView and NestedScrollView in Android and despite the document saying they are "just like" each other, they do look significantly different enough that swapping out such a core piece of infrastructure for RN is bound to cause issues so I'm not gonna go ahead with this change.

I recommend you to make your own native component and use your own implementation of ScrollView for now. I'm sorry that this isn't ideal but I hope you'll understand a change like this can be very disruptive.

@cpojer cpojer closed this Feb 18, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Component: ScrollView Component: Switch Import Started This pull request has been imported. This does not imply the PR has been approved.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants