赞
踩
本文转载自 https://www.jianshu.com/p/a840d2e9a312
on
开头的属性在不同标签上有的属性是不能做出相应的响应的,比如下面的例子,同样的属性,在View上不可使用,在Text上就可以
- var textInputTest = React.createClass({
- render(){
- return(
- <View style={styles.container}>
- {/* 实例化一个View */}
- <View style={styles.testViewStyle} onPressIn={() => {alert('点击')}}>
- </View>
- {/* 实例化一个Text */}
- <Text style={styles.testTextStyle} onPress={() => {alert('点击')}}></Text>
- </View>
- );
- }
- });
-
- var styles = StyleSheet.create({
- container: {
- flex:1,
- backgroundColor:'gray'
- },
-
- testViewStyle: {
- // 设置尺寸
- width:width,
- height:40,
- marginTop:20,
- // 设置背景颜色
- backgroundColor:'red'
- },
-
- testTextStyle: {
- // 设置尺寸
- width:width,
- height:40,
- marginTop:20,
- // 设置背景颜色
- backgroundColor:'yellow'
- }
- });

效果:
- import {
- AppRegistry,
- StyleSheet,
- Text,
- View,
- TouchableOpacity
- } from 'react-native';
-
效果:
完成上面的步骤我们就可以使用Touchable来包装我们的标签了,格式如下
- <TouchableOpacity Touchable属性>
- <需要包装的标签></需要包装的标签>
- </TouchableOpacity>
-
这里就来将上面的方式更改一下,从中可以看出,不仅可以让标签有接收触摸事件能力,还出现了不透明的效果(类似于高亮的效果)
- var textInputTest = React.createClass({
- render(){
- return(
- <View style={styles.container}>
- {/* 包装View */}
- <TouchableOpacity
- onPress={() => {alert('点击了View')}}
- >
- <View style={styles.testViewStyle}></View>
- </TouchableOpacity>
- {/* 包装Text */}
- <TouchableOpacity
- onPress={() => {alert('点击了Text')}}
- >
- <Text style={styles.testTextStyle}></Text>
- </TouchableOpacity>
- </View>
- );
- }
- });
-

当手指点下的时候,该视图的不透明度会进行降低同时会看到相应的颜色(原理:在底层新添加一个View),需要注意的是TouchableHighlight只能进行一层嵌套,不能多层嵌套,如果需要多层嵌套就要用View包装
TouchableWithoutFeedback
的属性该组件封装了响应触摸事件,当点击按下的时候,该组件的透明度会降低
TouchableWithoutFeedback
的属性- var textInputTest = React.createClass({
- render(){
- return(
- <View style={styles.container}>
- {/* 点击 */}
- <TouchableHighlight
- onPress={() => {alert('点击')}}
- underlayColor={'red'}
- >
- <View style={styles.testViewStyle}></View>
- </TouchableHighlight>
-
- {/* 按下 */}
- <TouchableHighlight
- onPressIn={() => {alert('按下')}}
- underlayColor={'orange'}
- >
- <View style={styles.testViewStyle}></View>
- </TouchableHighlight>
-
- {/* 抬起 */}
- <TouchableHighlight
- onPressOut={() => {alert('抬起')}}
- underlayColor={'blue'}
- >
- <View style={styles.testViewStyle}></View>
- </TouchableHighlight>
-
- {/* 长按 */}
- <TouchableHighlight
- onLongPress={() => {alert('长按')}}
- underlayColor={'yellow'}
- >
- <View style={styles.testViewStyle}></View>
- </TouchableHighlight>
- </View>
- );
- }
- });
-
-

效果:
- var textInputTest = React.createClass({
- render(){
- return(
- <View style={styles.container}>
- {/* 点击 */}
- <TouchableOpacity
- onPress={() => {alert('点击')}}
- >
- <View style={styles.testViewStyle}></View>
- </TouchableOpacity>
-
- {/* 按下 */}
- <TouchableOpacity
- onPressIn={() => {alert('按下')}}
- >
- <View style={styles.testViewStyle}></View>
- </TouchableOpacity>
-
- {/* 抬起 */}
- <TouchableOpacity
- onPressOut={() => {alert('抬起')}}
- >
- <View style={styles.testViewStyle}></View>
- </TouchableOpacity>
-
- {/* 长按 */}
- <TouchableOpacity
- onLongPress={() => {alert('长按')}}
- >
- <View style={styles.testViewStyle}></View>
- </TouchableOpacity>
- </View>
- );
- }
- });
-

效果:
链接:https://www.jianshu.com/p/a840d2e9a312
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。