我尝试在ScrollView
上运行flex,只要ScrollView具有flex: 1
,内部滚动就不起作用。下面是expo小提琴(您可以运行此代码并进行操作)https://snack.expo.io/SySerKNp-
请注意,如果您从X1 M3 N1 X中删除X1 M2 N1 X,它确实允许滚动,但随后您失去了Flex功能(让红色容器向下推起上框(ScrollView)的能力),所以我必须在那里有一个Flex。
附言-我只在android上工作,我还没有在iPhone上测试过(我不介意那里的结果)
任何想法我错过了什么?为什么ScrollView
将无法正常工作时,它有一个flex: 1
?谢谢!
6条答案
按热度按时间5ktev3wc1#
尝试使用flexGrow:1代替Flex:1 in scrollView内容容器样式如下。
https://snack.expo.io/HkkEVoh6Z
pgccezyw2#
我相信你的问题是你告诉ScrollView在flex=1时占据所有可用空间,但问题是ScrollView的工作方式不同。它会自动呈现它的所有子元素,所以它在flex下的工作方式不同。这就是与普通ListView或FlatList的区别,后者的性能更好。
我相信这种零食解决了这个问题:https://snack.expo.io/SkxN9GOT-
基本上,我是根据(screenHeight -红框的当前高度)获取设备的高度并将ScrollView设置为固定高度。
cnh2zyt33#
最好的方法是将ScrollView Package 在View中并使用Flex控制该视图,滚动视图将跟随。
这是一个小例子
xoshrz7s4#
这个answer已经提供了实现方法。
但是这里有一个解释,为什么你不能用你的方法来做。
应用于滚动视图内容容器,该内容容器 Package 所有子视图。
因此,当您将
flex: 1
应用于contentContainer
时,它会将ScrollView
的整个高度(高度也是flex: 1
)作为其父项View
。你也可以模拟-
能够放下红色容器以向上推上部箱子
通过向
ScrollView
添加父项并在父项中应用样式yhived7q5#
试试这个,它会100%解决你的问题
cczfrluj6#
flex:1
等于flexGrow:1 flexShrink:1 flexBasis:0
;flexGrow:1
等于flexGrow:1 flexShrink:0 (default value) flexBasis:0
。因此,设置
flex:1
会使ScrollView内容收缩到其父级,因此不可滚动。