0

I have a flat List and I want when I scroll to disappear the header I have and when stop scrolling to show the header. I almost got it to work, but the styling is not good. Here is my implementation:

Main Screen (ExploreScreen):

const HEADER_HEIGHT = 250;


const scrollY = new Animated.Value(0);
const diffClamp = Animated.diffClamp(scrollY, 0, HEADER_HEIGHT);
const translateY = diffClamp.interpolate({
  inputRange: [0, HEADER_HEIGHT],
  outputRange: [0, -HEADER_HEIGHT],
});

...
return (
   <Animated.View
      style={{
        transform: [{translateY: translateY}],
        elevation: 4,
        zIndex: 100,
      }}>
      <ExploreHeader
        theme={theme}
        isDark={isDark}
        categories={categories}
        handleCategoryClick={handleCategoryClick}
        selectedCategory={selectedCategory}
        contentLoading={contentLoading}
        queries={queries}
        selectedQuery={selectedQuery}
        handleQueryClick={handleQueryClick}
      />
    </Animated.View>

    <ExploreData
        selectedCategory={selectedCategory}
        onRefresh={onRefresh}
        recipes={recipes}
        contentLoading={contentLoading}
        refreshing={refreshing}
        updateUser={updateUser}
        scrollY={scrollY}
      />

_

And in exploreHeader styling:

exploreHeader: {
    position: 'absolute',
    top: 0,
    left: 0,
    right: 0,
    height: 250,
    borderBottomLeftRadius: 25,
    borderBottomRightRadius: 25,
    paddingBottom: wp(4),
  },

And finally in ExploreData where the flatlist is:

<FlatList
          showsVerticalScrollIndicator={false}
          data={recipes}
          ListFooterComponent={renderFooter}
          refreshing={contentLoading}
          maxToRenderPerBatch={5}
          refreshControl={
            <RefreshControl refreshing={refreshing} onRefresh={onRefresh} />
          }
          contentContainerStyle={styles.listStyles}
          renderItem={renderChefItem}
          onScroll={(e) => {
            scrollY.setValue(e.nativeEvent.contentOffset.y);
          }}
        />

1 Answer 1

2

You can use onScrollEndDrag and onScrollBeginDrag to toggle the visibility of the header.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.