React Native ScrollView 高度问题
React Native ScrollView height issues
我想创建一个水平滚动视图,但我遇到了一些问题。 ScrollView 占据了我屏幕的所有剩余 space,但我想要的是 ScrollView 只占据最大 children 的高度。我怎样才能做到这一点?
我试过为样式设置一个固定的高度,但是没有用。有帮助吗?
<ScrollView horizontal showsHorizontalScrollIndicator={false} style={styles.guessList}>
{guessList.map((guess, index) => (
<NumberContainer style={styles.guessItem} key={guess}>#{guessList.length - index} {guess}</NumberContainer>
))}
const styles= StyleSheet.create({
guessList: {
height: 70
},
guessItem: {
marginRight: 5
}
});
就像@Vignesh 说的那样,这应该可以完成工作
<ScrollView contentContainerStyle={{flexGrow: 1} ... >
给你一个小技巧:获取最大尺寸并将其设置为滚动视图
<ScrollView horizontal showsHorizontalScrollIndicator={false} style={{height: this.state.biggest_child_height}}>
{guessList.map((guess, index) => (
<NumberContainer onLayout={(event) => {
if(event.nativeEvent.layout.height > this.state.biggest_child_height){
this.setState({biggest_child_height: event.nativeEvent.layout.height})
}
}} style={styles.guessItem} key={guess}>#{guessList.length - index} {guess}</NumberContainer>
))}
</ScrollView>
编辑:
你显然需要玩一下 flex 或设置一个高度来第一次渲染组件
我刚刚尝试在 ScrollView 的样式上添加 {flexGrow: 0},现在可以了。它只需要 space 就足以包含子组件。
试试这个:
<View style={{maxHeight: 400, minHeight: 100}}>
<ScrollView>
...
</ScrollView>
</View>
之后View会根据ScrollView的高度获取高度。
我想创建一个水平滚动视图,但我遇到了一些问题。 ScrollView 占据了我屏幕的所有剩余 space,但我想要的是 ScrollView 只占据最大 children 的高度。我怎样才能做到这一点?
我试过为样式设置一个固定的高度,但是没有用。有帮助吗?
<ScrollView horizontal showsHorizontalScrollIndicator={false} style={styles.guessList}>
{guessList.map((guess, index) => (
<NumberContainer style={styles.guessItem} key={guess}>#{guessList.length - index} {guess}</NumberContainer>
))}
const styles= StyleSheet.create({
guessList: {
height: 70
},
guessItem: {
marginRight: 5
}
});
就像@Vignesh 说的那样,这应该可以完成工作
<ScrollView contentContainerStyle={{flexGrow: 1} ... >
给你一个小技巧:获取最大尺寸并将其设置为滚动视图
<ScrollView horizontal showsHorizontalScrollIndicator={false} style={{height: this.state.biggest_child_height}}>
{guessList.map((guess, index) => (
<NumberContainer onLayout={(event) => {
if(event.nativeEvent.layout.height > this.state.biggest_child_height){
this.setState({biggest_child_height: event.nativeEvent.layout.height})
}
}} style={styles.guessItem} key={guess}>#{guessList.length - index} {guess}</NumberContainer>
))}
</ScrollView>
编辑:
你显然需要玩一下 flex 或设置一个高度来第一次渲染组件
我刚刚尝试在 ScrollView 的样式上添加 {flexGrow: 0},现在可以了。它只需要 space 就足以包含子组件。
试试这个:
<View style={{maxHeight: 400, minHeight: 100}}>
<ScrollView>
...
</ScrollView>
</View>
之后View会根据ScrollView的高度获取高度。