kyr*_*kin 13 javascript android ios mobile-development react-native
我正在使用TouchableHighlight,但我只能使用underlayColor更改背景颜色.但是如何改变其他内容呢?
Nad*_*bit 10
您可以使用样式更改所有内容.就像是:
'use strict';
var React = require('react-native');
var {
AppRegistry,
StyleSheet,
Text,
View,
TouchableHighlight
} = React;
var colors = ['#ddd', '#efefef', 'red', '#666', 'rgba(0,0,0,.1)', '#ededed'];
var backgroundcolors = ['green', 'black', 'orange', 'blue', 'purple', 'pink'];
var SampleApp = React.createClass({
getInitialState() {
return {
color: 'orange',
backgroundColor: 'rgba(0,0,0,.1)'
}
},
_changeStyle() {
var color = colors[Math.floor(Math.random()*colors.length)];
var backgroundColor = backgroundcolors[Math.floor(Math.random()*backgroundcolors.length)];
this.setState({
color: color,
backgroundColor: backgroundColor
})
},
render: function() {
return (
<View style={styles.container}>
<TouchableHighlight
onPress={ () => this._changeStyle() }
style={{ backgroundColor: this.state.backgroundColor, height: 60, flexDirection: 'row', alignItems:'center', justifyContent: 'center' }}>
<Text style={{ fontSize: 22, color: this.state.color }}>CHANGE COLOR</Text>
</TouchableHighlight>
<TouchableHighlight style={{ backgroundColor: 'red', height: 60, flexDirection: 'row', alignItems:'center', justifyContent: 'center' }}>
<Text style={{ color: 'white', fontSize:22 }} >Click Me</Text>
</TouchableHighlight>
</View>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
marginTop:60
}
});
AppRegistry.registerComponent('SampleApp', () => SampleApp);
Run Code Online (Sandbox Code Playgroud)
我已经建立了几个按钮的示例项目在这里,并放置下面的代码.希望这可以帮助!
https://rnplay.org/apps/k_6rtg
'use strict';
var React = require('react-native');
var {
AppRegistry,
StyleSheet,
Text,
View,
TouchableHighlight
} = React;
var colors = ['#ddd', '#efefef', 'red', '#666', 'rgba(0,0,0,.1)', '#ededed'];
var backgroundcolors = ['green', 'black', 'orange', 'blue', 'purple', 'pink'];
var SampleApp = React.createClass({
getInitialState() {
return {
color: 'orange',
backgroundColor: 'rgba(0,0,0,.1)'
}
},
_changeStyle() {
var color = colors[Math.floor(Math.random()*colors.length)];
var backgroundColor = backgroundcolors[Math.floor(Math.random()*backgroundcolors.length)];
this.setState({
color: color,
backgroundColor: backgroundColor
})
},
render: function() {
return (
<View style={styles.container}>
<TouchableHighlight
onPress={ () => this._changeStyle() }
style={{ backgroundColor: this.state.backgroundColor, height: 60, flexDirection: 'row', alignItems:'center', justifyContent: 'center' }}>
<Text style={{ fontSize: 22, color: this.state.color }}>CHANGE COLOR</Text>
</TouchableHighlight>
<TouchableHighlight style={{ backgroundColor: 'red', height: 60, flexDirection: 'row', alignItems:'center', justifyContent: 'center' }}>
<Text style={{ color: 'white', fontSize:22 }} >Click Me</Text>
</TouchableHighlight>
</View>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
marginTop:60
}
});
AppRegistry.registerComponent('SampleApp', () => SampleApp);
Run Code Online (Sandbox Code Playgroud)
这个答案假设你想在按下按钮时改变颜色:
使用TouchableWithoutFeedback并定义自己的onPressIn和onPressOut函数来更改文本颜色.
<TouchableWithoutFeedback onPressIn={this.colorText} onPressOut={this.resetText}>
<Text style={[styles.textColored()]}>MyText</Text>
</TouchableWithoutFeedback>
colorText: function() {
this.setState({textColored: true});
},
resetText: function() {
this.setState({textColored: false});
},
textColored: function() {
if(this.state.textColored) {
return styles.textColored;
} else {
return styles.textNormal;
}
}
Run Code Online (Sandbox Code Playgroud)
使用TouchableHighlight,您可以像这样
state = { selected: false };
setSelected(selected: boolean) {
this.setState({ selected: selected });
}
textStyle() {
return this.state.selected ? styles.textSelected : styles.text;
}
Run Code Online (Sandbox Code Playgroud)
然后在渲染功能
<TouchableHighlight
underlayColor={Theme.palette.accent}
onPress={() => onPress()}
onShowUnderlay={() => this.setSelected(true)}
onHideUnderlay={() => this.setSelected(false)}
>
<Text style={this.textStyle()}>{text}</Text>
</TouchableHighlight>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26599 次 |
| 最近记录: |