ReactNative 之state来改变button的背景图片
来源:互联网 发布:linux 查看网卡流量 编辑:程序博客网 时间:2024/06/16 20:07
需求:默认状态下button有一张背景图, 在点击后变换成另外一张背景图。
使用的技术:TouchableOpacity
思路:
自定义组件UpdateButtonSelectStatus,将TouchableOpacity的两个事件方法bind到自定义的方法上_onPressIn,_onPressOut 并且在这两个方法中记录button的状态,
我这里自定义了名字为 pressStatus 的属性来记录当前的状态。然后根据不同的状态来改变image即可。
import React from'react';
import {
AppRegistry,
StyleSheet,
Text,
TextInput,
Alert,
Image,
View,
TouchableOpacity
} from 'react-native';
//如果需要动态改变内容布局等,就需要用到state了,通常的方式就是自己定义组件
class UpdateButtonStatus extendsReact.Component {
constructor(props) {
super(props);
//构建的时候设置初始值
this.state = {pressStatus:'normal'};
}
_onPressIn() {
//设置不同的状态
this.setState({pressStatus:'pressin'});
}
_onPressOut() {
//设置不同的状态
this.setState({pressStatus:'normal'}); } render() { return ( <TouchableOpacity
// 将自定义的方法bind到button对应的不同的状态方法上
onPressIn = {this._onPressIn.bind(this)}
onPressOut = {this._onPressOut.bind(this)}
//将pressin时候的透明效果删除
activeOpacity = {1}
//设置style
style = {styles.loginButton
} >
// image根据不同的当前的状态来设置不同的图片。猜想此时区分不同状态设置不同的图片,rn就已经将对应关系保存了,
// 在点击button的时候会自动匹配不同的布局,因此可以看到在后面的调用只有一次,但是却可以支持不同状态的回调。
<Image source = {this.state.pressStatus =='pressin'? {uri:'login_btn_selected'} : {uri:'login_btn_disabled'}}
style = {{
height:33,
borderRadius:5
}} >
<Text style = {{color:'white', fontSize:13, textAlign:'center', alignSelf:'center', marginTop:10}
}>
登录
< / Text >
< / Image >
< / TouchableOpacity >
)
}
}
//调用的时候就一次调用,初始化button的状态
<UpdateButtonStatus pressStatus ='normal'/>
- ReactNative 之state来改变button的背景图片
- UGUI之用脚本动态的改变Button的背景图片
- 安卓中如何通过事件来改变Button与ListView控件的背景图片
- android selector(改变button,textview,listview的背景图片)
- 有背景图片的button
- ReactNative入门之props与state
- UIButton, 设置button的背景图片
- JS之鼠标移上去的时候改变背景图片
- Button按下效果之变换背景图片
- ReactNative学习实例(一)动态变化的state
- ReactNative FlatList state更新,视图不更新的问题
- win8,win8.1应用中生成显示button和button背景图片的三,四种方法以及改变元素样式的四种方法
- IE下Button背景图片无效的问题
- button点击切换背景图片的问题
- 解决 button 的背景图片被拉伸
- ios开发之改变UIAlertView背景图片
- 为button设置背景图片,且全无button痕迹的css
- iOS学习之——button重写方法改变button中图片文字的位置
- sed使用
- RHEL7--UNIT11--网络管理
- Androidstudio the logging tag can be at most 23 characters
- Python操作Jenkins
- Android中把assets目录下所有图片转换成bitmap存入list集合
- ReactNative 之state来改变button的背景图片
- Mybatis 面试基础题
- WebLogic 11g interactive quick reference
- Angular 2 + 折腾记 :(10) 初步了解动画,以及一步一步写个动画效果
- 转载1——Android自定义中EditText中的hint文本的大小
- hive优化
- linux 基本命令
- 第四届 山东省ACM A-Number and B-Number(数位DP+二分 待整理)
- unit10 练习题