React Native - 如何检测视图屏幕是否可滚动?
React Native - How to detect view screen is scrollable?
主要问题:如何保持 ScrollView
的滚动条可见?
和没有回答我的问题
类似问题:如何检测视图高度的内容是否高于设备高度?所以我可以 setState
如果屏幕是可滚动的
我已尝试使用 onLayout
和此代码:
<View onLayout={(event)=>{var {x, y, width, height}=event.nativeEvent.layout}}>
//Long Content higher than device height
</View>
但我在设备屏幕上得到了 view
的 height
而不是内容本身的 height
有没有办法回答我的问题?
我不知道如何在 View
中获取高度,但在 ScrollView
中你可以使用 onContentSizeChange
.
import React, { Component } from "react";
import { View, Text, StyleSheet, Dimensions, ScrollView, Image } from "react-native";
const images =
[
{ image: 'https://www.lens-rumors.com/wp-content/uploads/2014/10/Nikon-AF-S-DX-Nikkor-18-140mm-f3.5-5.6G-ED-VR-sample-images1.jpg', text: 'hello' },
{ image: 'https://www.lens-rumors.com/wp-content/uploads/2014/10/Nikon-AF-S-DX-Nikkor-18-140mm-f3.5-5.6G-ED-VR-sample-images1.jpg', text: 'hello' },
{ image: 'https://www.lens-rumors.com/wp-content/uploads/2014/10/Nikon-AF-S-DX-Nikkor-18-140mm-f3.5-5.6G-ED-VR-sample-images1.jpg', text: 'hello' },
{ image: 'https://www.lens-rumors.com/wp-content/uploads/2014/10/Nikon-AF-S-DX-Nikkor-18-140mm-f3.5-5.6G-ED-VR-sample-images1.jpg', text: 'hello' }];
class Test extends Component {
find_dimesions(width,height) {
const deviceHeight = Dimensions.get("window").height;
const deviceWidth = Dimensions.get("window").width;
console.log(" view width:" + width + " " + "view height:" + height);
console.log(
"device width:" + deviceWidth + " " + " device height:" + deviceHeight
);
}
render() {
return (
<ScrollView
onContentSizeChange={(width, height) => {
this.find_dimesions(width,height)
}}
style={styles.container}
>
{images.map((data, index) => {
return <View key={index} style={{ flex: 1 }}>
<Image style={{height:200,width:200}} source={{ uri: data.image }} />
</View>
})}
</ScrollView>
);
}
}
const styles = StyleSheet.create({
container: {
flex:1,
// justifyContent: "center",
// alignItems: "center",
backgroundColor: "#F5FCFF",
}
});
export default Test;
主要问题:如何保持 ScrollView
的滚动条可见?
和
类似问题:如何检测视图高度的内容是否高于设备高度?所以我可以 setState
如果屏幕是可滚动的
我已尝试使用 onLayout
和此代码:
<View onLayout={(event)=>{var {x, y, width, height}=event.nativeEvent.layout}}>
//Long Content higher than device height
</View>
但我在设备屏幕上得到了 view
的 height
而不是内容本身的 height
有没有办法回答我的问题?
我不知道如何在 View
中获取高度,但在 ScrollView
中你可以使用 onContentSizeChange
.
import React, { Component } from "react";
import { View, Text, StyleSheet, Dimensions, ScrollView, Image } from "react-native";
const images =
[
{ image: 'https://www.lens-rumors.com/wp-content/uploads/2014/10/Nikon-AF-S-DX-Nikkor-18-140mm-f3.5-5.6G-ED-VR-sample-images1.jpg', text: 'hello' },
{ image: 'https://www.lens-rumors.com/wp-content/uploads/2014/10/Nikon-AF-S-DX-Nikkor-18-140mm-f3.5-5.6G-ED-VR-sample-images1.jpg', text: 'hello' },
{ image: 'https://www.lens-rumors.com/wp-content/uploads/2014/10/Nikon-AF-S-DX-Nikkor-18-140mm-f3.5-5.6G-ED-VR-sample-images1.jpg', text: 'hello' },
{ image: 'https://www.lens-rumors.com/wp-content/uploads/2014/10/Nikon-AF-S-DX-Nikkor-18-140mm-f3.5-5.6G-ED-VR-sample-images1.jpg', text: 'hello' }];
class Test extends Component {
find_dimesions(width,height) {
const deviceHeight = Dimensions.get("window").height;
const deviceWidth = Dimensions.get("window").width;
console.log(" view width:" + width + " " + "view height:" + height);
console.log(
"device width:" + deviceWidth + " " + " device height:" + deviceHeight
);
}
render() {
return (
<ScrollView
onContentSizeChange={(width, height) => {
this.find_dimesions(width,height)
}}
style={styles.container}
>
{images.map((data, index) => {
return <View key={index} style={{ flex: 1 }}>
<Image style={{height:200,width:200}} source={{ uri: data.image }} />
</View>
})}
</ScrollView>
);
}
}
const styles = StyleSheet.create({
container: {
flex:1,
// justifyContent: "center",
// alignItems: "center",
backgroundColor: "#F5FCFF",
}
});
export default Test;