mfc static text文字修改_一文解决RN0.58部分安卓手机text显示不全问题

本文介绍了在RN0.58版本中,部分安卓手机如小米、OPPO等出现文本显示不全的问题,特别是使用小米兰亭pro字体的设备。通过在GitHub上查找解决方案,提出了四种方法,包括在文字末尾添加空格、设置`textBreakStrategy`和`fontFamily`属性,以及全局修改Text组件的`fontFamily`。建议使用全局设置`fontFamily`的方法,以避免繁琐的组件级调整并确保所有受影响的Text组件正常显示。
摘要由CSDN通过智能技术生成

2eb1a279283ad20a50bdfaae96f64151.png

最近项目开发中遇到一个Android的适配问题,同事的红米手机K20pro上项目App中部分页面上的文本显示不全,比如下面这样

4a27599087f6e12eabbe092cacaf2411.png

同事的手机升级到了最新的miui12, 默认的手机字体是小米兰亭pro,正好我这边有个小米8的测试机,前两天也升级到了最新的MIUI12系统,同样的页面在小米8上显示正常。

遇到这种问题确实让人头大,怎么办?搞呗。

在GitHub上react-native项目中搜索相关问题,下面是就是对相关问题的讨论issues,感兴趣的朋友可以去看看。Github相关问题:

https://github.com/facebook/react-native/issues/15114​github.com

,发现不只是部分小米手机会出现此问题, 部分oppo,one plus, lG, 三星及google手机上也会出现类似问题。

解决方案:

1.文字末尾添加空格

Example: {empIDText + " "}
before it was like: {empIDText}

2.设置text组件的fontFamily

<Text style={{fontFamily: ""}}>

3. 设置text组件的textBreakStrategy

有关textBreakStrategy的('simple', 'highQuality', 'balanced')的不同之处,可以参考stack overflow上的问题:

What is the difference between simple, highQuality, balanced for textBreakStrategy property in React Native?​stackoverflow.com
<Text key={node.key} textBreakStrategy="simple">{node.content}</Text>

4.全局设置text组件的fontFamily

import React, { Component } from 'react';
import { View, Platform, Text } from 'react-native';
const defaultFontFamily = {
	...Platform.select({
		android: { fontFamily: '' }
	})
};
const oldRender = Text.render;
Text.render = function(...args) {
	const origin = oldRender.call(this, ...args);
	return React.cloneElement(origin, {
		style: [defaultFontFamily, origin.props.style]
	});
};

通过改写覆盖 Text 组件 的 render,实现修改字体全局配置,代码放到入口文件,比如 app.js 里面就可以了。

这种方案会全局改掉字体,覆盖系统默认字体,这样不会覆盖默认字体,出问题的 Text 组件也可以显示正常~

总结,前3中方案需要在每个出问题的 Text 组件设置,如果比较多,就不是很灵活,也比较繁琐;第4中方案就可以一劳永逸的解决这个问题了。

觉得文章不错的,给我点个赞哇,关注一下呗!
技术交流可关注公众号【君伟说】,加我好友一起探讨
VX交流群:wayne214(备注技术交流)邀你入群,抱团学习共进步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值