[react-native] 09 touchable组件 + 滚动视图

什么是touchable组件

  1. touchable Highlight 触碰后,高亮显示
  2. Touchable Opacity 触碰后,透明度降低(模糊显示)
  3. Touchable Without Feedback 触碰后,无任何响应

Touchable Highlight 触碰高亮

首先我们引入 TouchableHighlight 进我们的 index.js 文件

js 复制代码
import {Text, View, ScrollView, StyleSheet, TextInput, Dimensions, Button, TouchableHighlight} from 'react-native'

创建 TouchableHighlight 标签,添加些许样式

js 复制代码
//创建标签
<View style={[styles.container]}>  
    <TouchableHighlight onPress = {() => console.log('触碰高亮显示')}>  
        <View style={[styles.item]} ><Text>触碰高亮</Text></View>  
    </TouchableHighlight>  
</View>
js 复制代码
//添加样式
const styles = StyleSheet.create({  
    container:{  
        flex:1,  
        justifyContent:'center',  
        alignItems:'center'  
    },  

    item:{  
        marginBottom:20,  
        padding:10,  
        borderWidth:1,  
        borderColor:'red'  
    }  
})

效果如图

Touchable Opacity + 无响应

引入组件

TouchableOpacity, TouchableWithoutFeedback

js 复制代码
//添加标签
<TouchableHighlight onPress = {() => alert('触碰高亮显示')}>  
    <View style={[styles.item]} ><Text>触碰高亮</Text></View>  
</TouchableHighlight>  
  
<TouchableOpacity onPress = {() => alert('触碰透明度变化')}>  
    <View style={[styles.item]} ><Text>触碰透明度变化</Text></View>  
</TouchableOpacity>  
  
<TouchableWithoutFeedback onPress = {() => alert('触碰无响应')}>  
    <View style={[styles.item]} ><Text>触碰无响应</Text></View>  
</TouchableWithoutFeedback>

触碰后

滚动视图

引入 ScrollView 组件

js 复制代码
//模拟滑动
render(){  
    return (  
        <ScrollView>  
            <Text style={[styles.text]}>  
                sdfgjspojgdiofjgpodkopvkmscmvknjnbsoineijorwijopdsmvkfnsjbng jiwjfopij dmfklmspwej opijgiojndfio;swj no;  
                ejwfoiae;nrgo aoierngiownoi nksjdnvnefnog nrgo  
                ojngoierngenknfkldsnvdfkslnlgenr oingoinwin knsmdklgndlkfngioenrgoienrklnmknglkerngioenriogjioenjgnoeg  
                ofiwjenroignoisndklvnlksmniovnomiowmnoirngiowneroijnwriognionjreiongoiqweniofnwiongfionieorngkoenthamq  
                powkepomfpomr oinoirne;aogiaejgPAWOjrtmq2j3nklfnmb  
                wpgmppwpkopekjmfoiwergjioerjfiomkonsoijdvioong omnopwjposfkowkpofgdiohgiorjt23ipewjg9posjfpo  
                iwejfipojgpoijp]kowpjefopppgwe87575798457wf68w684gwrg  
                weofhwoihgfiohneojgnvongoineoirnfodiasjfeiojwgoihnsoiv  
            </Text>  
        </ScrollView>  
    )  
    }  
}
js 复制代码
//样式
const styles = StyleSheet.create({  
container:{  
flex:1,  
justifyContent:'center',  
alignItems:'center'  
},  
  
text:{  
fontSize:30  
}  
})

给 scrollview 添加样式,常用的几个属性

js 复制代码
//标签
<ScrollView  
    style={[styles.scrlview]}  
    contentContainerStyle={{margin:30}}> 
    
    <Text style={[styles.text]}>  
        sdfgjspojgdiofjgpodkopvkmscmvknjnbsoineijorwijopdsmvkfnsjbng jiwjfopij dmfklmspwej opijgiojndfio;swj no;  
        ejwfoiae;nrgo aoierngiownoi nksjdnvnefnog nrgo  
        ojngoierngenknfkldsnvdfkslnlgenr oingoinwin knsmdklgndlkfngioenrgoienrklnmknglkerngioenriogjioenjgnoeg  
        ofiwjenroignoisndklvnlksmniovnomiowmnoirngiowneroijnwriognionjreiongoiqweniofnwiongfionieorngkoenthamq  
        powkepomfpomr oinoirne;aogiaejgPAWOjrtmq2j3nklfnmb  
        wpgmppwpkopekjmfoiwergjioerjfiomkonsoijdvioong omnopwjposfkowkpofgdiohgiorjt23ipewjg9posjfpo  
        iwejfipojgpoijp]kowpjefopppgwe87575798457wf68w684gwrg  
        weofhwoihgfiohneojgnvongoineoirnfodiasjfeiojwgoihnsoiv  
    </Text>  
</ScrollView>
js 复制代码
const styles = StyleSheet.create({  
container:{  
flex:1,  
justifyContent:'center',  
alignItems:'center'  
},  
  
text:{  
fontSize:30  
},  
  
  
scrlview:{  
backgroundColor:'#ddd',  
marginHorizontal:20  
}  
})

设置水平滚动

js 复制代码
//水平滚动
<View>  
    <ScrollView style={{backgroundColor:'#dfb'}} horizontal={true} >  
        <Text style={[styles.nav]} > 新闻 </Text>  
        <Text style={[styles.nav]} > 体育 </Text>  
        <Text style={[styles.nav]} > 财经 </Text>  
        <Text style={[styles.nav]} > 娱乐 </Text>  
        <Text style={[styles.nav]} > 科技 </Text>  
        <Text style={[styles.nav]} > 军事 </Text>  
    </ScrollView>  

    <ScrollView style={[styles.scrlview]} contentContainerStyle={{margin:30}}>  
        <Text style={[styles.text]}>  
            sdfgjspojgdiofjgpodkopvkmscmvknjnbsoineijorwijopdsmvkfnsjbng jiwjfopij dmfklmspwej opijgiojndfio;swj no;  

        </Text>  
    </ScrollView>  
</View>
js 复制代码
//样式 nav
nav:{  
    margin:10,  
    height:50,  
    fontSize:30  
}

safeAreaView

相关推荐
是立不是利1 小时前
写给设计师的 CSS 博客美学指南
前端·css
默_笙2 小时前
🏝 Docker 就是"房地产开发":从施工图纸到小区物业的容器化指南
前端·javascript
计算机魔术师2 小时前
Rohan Paul 谈用时间跨度衡量智能体能力,并引用 OpenAI 自动化研究实习生里程碑
前端
kyriewen2 小时前
我手写了个极简版 React Router——才搞懂 v6 为什么砍了这么多 API
前端·javascript·程序员
a1117762 小时前
Shirone 二次元博客主题 开源
前端·开源
IT_陈寒2 小时前
Python的切片赋值把我坑惨了,这不是bug是特性
前端·人工智能·后端
掘金酱2 小时前
【社区公告】致每一位掘友:关于这次调整, 想再说几句
前端·人工智能
CoderLiu2 小时前
程序化工具调用(PTC)与动态工作流引擎:深入大模型工具调用的架构演进与实践
前端·人工智能·后端
码农胖大海2 小时前
我的第一个产品,只有一段提示词
前端·ai编程·产品
邋遢道3 小时前
# 企业级 Agent 从 0 到 1(二):技术选型与最小骨架
前端·chrome