[英]Image fixed inside the ScrollView with React native
我想在scrollview組件內部的專用視圖上修復圖像和線性漸變。 我嘗試了一些樣式,但每次,圖像滾動內容。
我能做什么 ?
<ScrollView>
{/* TODO: Prevent scroll for this View — Add blur image on background */}
<View>
<Image source={{ uri: cover_photo }} />
<LinearGradient />
</View>
{/* This view is scrollable ABOVE the background image */}
<View>
{…content}
</View>
</ScrollView>
為此,您將無法在ScrollView本身中設置Image或LinearGradient。 相反,您需要在ScrollView外部設置Image和LinearGradient,並將它們都設置為absolute
定位。
然后,將marginTop
的子視圖的marginTop設置為與圖像和LinearGradient的高度相同。 以下是一個示例設置:
var SampleApp = React.createClass({
let LinearGradient = <View style={{ position:'absolute', top:0, left:0, width: width, height:width, backgroundColor: 'rgba(100, 97, 67, .7)' }} />
render: function() {
return (
<View style={{ flex:1, backgroundColor: 'transparent' }}>
<View>
<Image style={{ height: width, width: width, position: 'absolute', top:0, left:0 }} source={{ uri: 'http://i01.i.aliimg.com/wsphoto/v0/32297951629_5/5pcs-lot-The-Hollowan-Star-Nicolas-Cage-Stylish-Square-Pillowcase-Cushion-Pillow-Cover.jpg' }} />
{ LinearGradient }
</View>
<ScrollView style={{ flex:1 }}>
<View style={{ marginTop:320 }}>
<Text>{content}</Text>
</View>
</ScrollView>
</View>
);
}
});
有一個工作版本在這里 。
https://rnplay.org/apps/PXNHyg
如果您不希望ScrollView從頂部偏移,只需刪除marginTop,就像在此示例中一樣。
https://rnplay.org/apps/-s97Gw
完整代碼如下:
'use strict';
var React = require('react-native');
var {
AppRegistry,
StyleSheet,
Text,
View,
Dimensions,
ScrollView,
Image
} = React;
let width = Dimensions.get('window').width
var SampleApp = React.createClass({
render: function() {
let LinearGradient = <View style={{ position:'absolute', top:0, left:0, width: width, height:width, backgroundColor: 'rgba(100, 97, 67, .7)' }} />
return (
<View style={{ flex:1, backgroundColor: 'transparent' }}>
<View>
<Image style={{ height: width, width: width, position: 'absolute', top:0, left:0 }} source={{ uri: 'http://i01.i.aliimg.com/wsphoto/v0/32297951629_5/5pcs-lot-The-Hollowan-Star-Nicolas-Cage-Stylish-Square-Pillowcase-Cushion-Pillow-Cover.jpg' }} />
{ LinearGradient }
</View>
<ScrollView style={{ flex:1 }}>
<View style={{ marginTop:320 }}>
<Text>{ipsum}</Text>
</View>
</ScrollView>
</View>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 28,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
fontSize: 19,
marginBottom: 5,
},
});
AppRegistry.registerComponent('SampleApp', () => SampleApp);
let ipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.