React Native学习之组件Touchable系列

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系列组件就学完了。若有不对之处,还请告知。谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容