RN版本是0.45。使用的技术栈是:react-native(0.45) + react-redux + redux-saga
1. 样式的值不要设置小数,安卓手机不支持。如:
style: {
padding: 4.5
}
2. 文字垂中位置不要使用lineHeigh控制,安卓不生效。
解决方法:使用padding | margin去控制
3.FlatList、ScrollView不要设置样式,安卓不生效。
4.TextInput在安卓上有默认的padding和一个白色下划线。
解决方法:将padding设置为0,添加underlineColorAndroid='transparent'属性
<TextInput underlineColorAndroid='transparent'/>
5.安卓手机 状态栏颜色处理(注:StatusBar可以在任意是视图中加载,可以放置多个后加载的会覆盖先加载的。)
{ Platform.OS !== 'ios' && <StatusBar backgroundColor='#FFFFFF' /> }
6. Text内容显示会超出。使用样式{flex: 1}解决
7. 解决安卓手机设置主题色后文字不显示问题
原因:Text组件没有设置color样式
解决方法:为Text属性设置默认的color
import React from 'react'
import {AppRegistry, Alert, Text, StyleSheet} from 'react-native'
const originTextRender = Text.prototype.render
/**
* Text组件是一个类组件 在它的render方法中,首先结构props属性,然后根据是否存在祖先节点,以及内
* 部的状态合并props属性。
*
* render方法经过babel的编译之后,会转换成React.createElement包裹的语法树, 从而转换成虚拟的D
* om树
*/
const styles = StyleSheet.create({
defaultStyle: {
color: '#24282E'
},
})
// 覆盖Text的render方法
Text.prototype.render = function render(...args) {
// 得到之前的节点
const origin = originTextRender.call(this, ...args)
//返回一个新的节点
return React.cloneElement(origin, {
allowFontScaling: false, //设置字体不根据系统的字体大小来改变
style: [styles.defaultStyle, origin.props.style]
})
}