美文网首页React-Native日记
React Native学习之组件Touchable系列

React Native学习之组件Touchable系列

作者: BlainPeng | 来源:发表于2016-09-01 07:43 被阅读2355次

Demo展示

Touchable.gif

今天学的组件有点于类似于原生Android当中的button,点击它时它的背景会发生变化,给用户一种视觉交互。在Android中叫selector,而在RN中叫Touchable系列。之前在学Text组件时,我们通过onPress事件可以给Text组件绑定触摸点击事件。为了像Text组件那样使得其他组件也可以被点击,RN提供了三个Touchable类组件:

  • TouchableHightlight:高亮触摸。用户点击时,会产生高亮效果
  • TouchableOpacity:透明触摸。用户点击时,被点击的组件会出现透明效果
  • TouchableWithoutFeedback:无反馈性触摸。用户点击时,被点击的组件不会出现任何视觉变化。(没有UI交互,一般很少用)

实现上图效果

import React, {Component} from 'react';
import {
    AppRegistry,
    StyleSheet,
    Text,
    TouchableHighlight,
    TouchableOpacity,
    View
} from 'react-native';

class RNStudyFour extends Component {

    show(text) {
        alert(text);
    }

    render() {
        return (
            <View >
                <TouchableHighlight
                    style={styles.container}
                    onPress={this.show.bind(this, 'TouchableHighlight activeOpacity')}
                    activeOpacity={0}
                    underlayColor="#00FF00">
                    <View >
                        <Text style={styles.font}>TouchableHighlight</Text>
                        <Text style={styles.font}>activeOpacity</Text>
                    </View>
                </TouchableHighlight>

                <TouchableHighlight
                    style={styles.container}
                    onPress={this.show.bind(this, 'TouchableHighlight underlayColor')}
                    underlayColor="#00FF00">
                    <View >
                        <Text style={styles.font}>TouchableHighlight</Text>
                        <Text style={styles.font}>underlayColor</Text>
                    </View>
                </TouchableHighlight>

                <TouchableOpacity
                    style={styles.container}
                    onPress={this.show.bind(this, 'TouchableOpacity')}>
                    <Text style={styles.font}>TouchableOpacity</Text>
                </TouchableOpacity>
            </View>
        );
    }
    }

const styles = StyleSheet.create({

    container: {
        height: 100,
        backgroundColor: '#FF0000',
        borderRadius: 10,
        justifyContent: 'center',
        alignItems: 'center',
        marginLeft: 30,
        marginRight: 30,
        marginTop: 30

    },
    font: {
        fontSize: 25,
        color: '#fff'
    },
});

AppRegistry.registerComponent('RNStudyFour', () => RNStudyFour);

实现起来还是比较简单的。有两个地方需要注意一下:

  • TouchableHighlight的activeOpacity和underlayColor

    • activeOpacity:触摸时透明度的设置
    • underlayColor:点击时背景阴影效果的背景颜色

TouchableHighlight还有两个属性,我们大部是用这两个,其它的就不介绍了。它们之间的区别根据图中可以明显的看出来。因为第一个按钮设置的activeOpacity为0,所以点击第一个按钮后完全不透明。

  • TouchableOpacity也有activeOpacity属性,但我们经常不用它,因为默认就设置背景颜色的变化了。

好了。今天的Touchable系列组件就学完了。若有不对之处,还请告知。谢谢!

相关文章

网友评论

    本文标题:React Native学习之组件Touchable系列

    本文链接:https://www.haomeiwen.com/subject/uvecettx.html