没有从RCTUIManager.measure和onLayout正确报告容器大小

时间:2016-05-15 21:16:39

标签: android ios react-native

下午好,

我正在尝试以编程方式滚动ScrollView,该ScrollView包含一个比真实大小的ScrollView大的视图容器。但是,ScrollView需要以预定的大小切断容器。因此,如果ScrollView高度为600px且容器大小为1000px,那么我需要访问1000px,以便我可以通过编程方式进行流畅滚动。这个问题在github上为另一位开发人员解决了,但这对我来说似乎没有用。这是我尝试过的:

<ScrollView> <View onLayout={(event) => {console.log(event.nativeEvent.layout);}> ... </View> </ScrollView>

尝试1:在scrollView和内部视图中放置onLayout回调并使用innerViews布局高度。 结果:这不起作用ScrollView和内部视图报告的高度为600。

尝试2:保存对ScrollView的引用,然后稍后调用RCTUIManager的measure函数:

RCTUIManager.measure(this.refs.scrollView.getInnerViewNode(), (...data)=>{console.log(data)});

结果:这也不起作用,innerViewNode再次报告容器高度(数据中的第4个参数)为600。

任何人都有接受容器高度的不同解决方案?我肯定在一个600%的px滚动视图中放置一个1000ish px视图,当我以编程方式滚动说100px时,我可以看到内容实际上比ScrollView包装器更大。

感谢任何人提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

这是我发现的解决方案:

<ScrollView>
     {{...components of variable length...}}
     <View key="bottomMarker" onLayout={() => {console.log(event.nativeEvent.layout.y)}}></View>
</ScrollView>

通过使用View作为底部的标记,您可以找到滚动视图底部的位置。