react-native 开发兼容性问题

石苏燕
2023-12-01

RN版本是0.45。使用的技术栈是:react-native(0.45) + react-redux + redux-saga

Android

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]
    })
}

 类似资料: