我构建反应本机应用程序,我使用scrollView for header与文本列表水平。 问题是滚动视图的高度占屏幕的一半大小。即使在宣称它是一种风格之后,它仍然保持不变。
使用scrollView 的屏幕
<View style={Style.container} >
{this.props.ExtendedNavigationStore.HeaderTitle ? <BackHeader header={this.props.ExtendedNavigationStore.HeaderTitle} onPressBack={this.goBack} /> : <Header openDrawer={this.openDrawer} />}
<ScrollView contentContainerStyle={{flexGrow:1}} style={Style.scrollableView} horizontal showsHorizontalScrollIndicator={false}>
{this.renderScrollableHeader()}
</ScrollView>
<Routes /> /* stack with dashboard screen */
</View>
</Drawer>
)
}
样式
import {StyleSheet} from 'react-native'
import {calcSize} from '../../utils'
const Styles = StyleSheet.create({
container : {
flex:1,
backgroundColor:"#e9e7e8"
},
scrollableView:{
height: calcSize(40),
backgroundColor: '#000',
},
textCategory:{
fontSize: calcSize(25),
color:'#fff'
},
scrollableButton:{
flex:1,
margin:calcSize(30)
}
})
export default Styles
如您所见,黑色尺寸是滚动视图, 我希望它很小。
在路线堆叠到仪表板屏幕中,样式:
const Style = StyleSheet.create({
container: {
backgroundColor: '#9BC53D',
flex: 1,
justifyContent: 'space-around',
alignItems: 'center'
},
text: {
fontSize: 35,
color: 'white',
margin: 10,
backgroundColor: 'transparent'
},
button: {
width: 100,
height: 75,
margin: 20,
borderWidth: 2,
borderColor: "#ecebeb",
justifyContent: "center",
alignItems: "center",
borderRadius: 40
}
})
答案 0 :(得分:24)
ScrollView
存在一个现有限制,其中height
无法直接提供
将ScrollView
包裹在另一个View
中,并为View
提供高度。
像,
render() {
return (
<View style={styles.container}>
<View style={{height: 80}} >
<ScrollView
horizontal
style={{ backgroundColor: 'blue'}}
>
<Text style={{padding: 24}} >title1</Text>
<Text style={{padding: 24}} >title2</Text>
<Text style={{padding: 24}} >title3</Text>
<Text style={{padding: 24}} >title4</Text>
<Text style={{padding: 24}} >title5</Text>
</ScrollView>
</View>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
paddingTop: Constants.statusBarHeight,
backgroundColor: '#ecf0f1',
},
});
小吃样品: https://snack.expo.io/HkVDBhJoz
EXTRAS:与ScrollView
提供宽度的高度不同,
希望这有帮助。
答案 1 :(得分:2)
对我有用:
<ScrollView contentContainerStyle={{ flexGrow: 1 }}>
<View style={{ flexGrow: 1 }}>
...
</View>
</ScrollView>
答案 2 :(得分:0)
考虑到您对fixed height
使用header
,而对路由使用flex的问题,不同设备的方向可能无法很好地扩展,看起来很奇怪。
因此,您可以考虑将其切换为flex
以下是将flexGrow
添加到styles
的{{1}}的示例,因为它接受view props
ScrollView
此处是指向snack expo
的链接