iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >React Native 中处理 Android 手机吞字的解决方案
  • 531
分享到

React Native 中处理 Android 手机吞字的解决方案

React Native Android 手机吞字React Native 手机吞字 2022-11-13 14:11:13 531人浏览 独家记忆
摘要

目录复现问题解决问题示例React Native App 在部分型号的 Android 手机上,可能会发生文字显示不全的问题。 官方也有一个 相关的 Issue 

React Native App 在部分型号的 Android 手机上,可能会发生文字显示不全的问题。

官方也有一个 相关的 Issue ,并提供了如下的解决方案:

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

但是升级 React Native 到 0.66 之后,上面这个方法就不起作用了。

复现问题

作者在 React Native 0.67.4 环境下,编写了一个小 demo 来复现这个问题,如下:

function IncompleteText() {
  return (
    <View style={styles.container}>
      <View style={styles.row}>
        <Text style={styles.text}>我在左边 完整</Text>
        <Text style={styles.text}>我在右边 完整</Text>
      </View>
      <View style={styles.row}>
        <Text style={styles.text}>12345</Text>
        <Text style={styles.text}>67890</Text>
      </View>
      <View style={styles.row}>
        <Text style={styles.text}>abcd</Text>
        <Text style={styles.text}>efgh</Text>
      </View>
      <View style={styles.row}>
        <Text style={styles.text}>今年是 2022 年</Text>
        <Text style={styles.text}>亏了好多 ¥</Text>
      </View>
    </View>
  )
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  row: {
    marginTop: 16,
    marginHorizontal: 24,
    flexDirection: "row",
    alignItems: "center",
    justifyContent: "space-between",
    height: 60,
    backgroundColor: "#f5f5f5",
  },
  text: {
    fontSize: 18,
    color: "#333333",
    fontWeight: "normal",
    // fontFamily: 'DFWaWaSC-W5',
    backgroundColor: "yellow",
  },
})

当 Text 中的文本同时符合以下两个条件时,在部分 Android 手机上会出现文字显示不全的问题。

fontWeight

譬如作者这台手机:

手机型号MIUI 版本Android 版本
MI 812.5.210

就会出现文字显示不全的问题,即使将 fontWeight 设置为 bold ,也不会有粗体效果。

但是只要 style 设置了 fontFamily ,就不会有显示不全的问题,因此,怎样才能正确地设置 fontFamily 呢?

解决问题

stack overflow 上,有人问 How to set default font family in React Native? 。

在该问题的讨论列表中,作者找到了适合 React Native 0.66 以上版本的解决方案,如下:

// text-polyfill.ts
import React from "react"
import { Platform, StyleSheet, Text, TextProps } from "react-native"

const defaultFontFamily = {
  ...Platform.select({
    android: { fontFamily: "" },
  }),
}

// @ts-ignore
const __render: any = Text.render

// @ts-ignore
Text.render = function (props: TextProps, ref: React.RefObject<Text>) {
  if (Platform.OS === "iOS") {
    return __render.call(this, props, ref)
  }

  const { style, ..._props } = props
  const _style = StyleSheet.flatten(style) || {}
  return __render.call(
    this,
    { ..._props, style: { ...defaultFontFamily, ..._style } },
    ref
  )
}

示例

这里有 一个示例 ,供你参考。

到此这篇关于React Native 中处理 Android 手机吞字的解决方案的文章就介绍到这了,更多相关React Native Android 手机吞字内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: React Native 中处理 Android 手机吞字的解决方案

本文链接: https://www.lsjlt.com/news/171716.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • React Native 中处理 Android 手机吞字的解决方案
    目录复现问题解决问题示例React Native App 在部分型号的 Android 手机上,可能会发生文字显示不全的问题。 官方也有一个 相关的 Issue ...
    99+
    2022-11-13
    React Native Android 手机吞字 React Native 手机吞字
  • C++中常见的字符串处理问题及解决方案
    C++中常见的字符串处理问题及解决方案引言字符串处理是在C++编程中经常遇到的问题之一。无论是从用户的输入,还是从文件中读取数据,或者是进行数据的处理和转换,字符串处理始终占据着重要的位置。本文将介绍在C++中常见的字符串处理问题,并给出相...
    99+
    2023-10-22
    C++ 解决方案 字符串处理 关键词:
  • C++中错误处理机制问题的解析与解决方案
    C++中错误处理机制问题的解析与解决方案引言:在软件开发中,错误处理是非常重要的一环。当我们在编写C++程序时,难免会遇到各种错误,包括运行时错误和逻辑错误。为了确保程序的稳定性和可靠性,我们需要正确处理这些错误,并提供恰当的解决方案。本文...
    99+
    2023-10-22
    错误调试 异常处理 错误处理技巧
  • C++中错误处理机制问题解析与解决方案
    C++中错误处理机制问题解析与解决方案引言:C++是一种功能强大的编程语言,但是错误处理机制是每个C++程序员必须面对的重要问题。当程序出错时,不合理的错误处理机制可能会导致程序崩溃或出现未知的行为。因此,本文将探讨C++中常见的错误处理机...
    99+
    2023-10-22
    异常处理(Exceptions) 断言(Assertions)
  • Android中View事件防抖的处理方案
    这篇文章主要介绍了Android中View事件防抖的处理方案,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。两种方案侵入式防抖处理(NoShakeClickListener) ...
    99+
    2023-06-14
  • C++中错误处理机制问题分析与解决方案
    C++中错误处理机制问题分析与解决方案引言:错误处理是软件开发过程中十分重要的一部分,能够帮助开发人员诊断、调试和修复软件中的bug。在C++中,错误处理机制主要是通过异常处理来实现的。然而,异常处理也可能引发一些问题,本文将对C++中的错...
    99+
    2023-10-22
    C++ 解决方案 错误处理机制
  • win10插上耳机还外放处理解决方案
    win10插上耳机还外放的情形在许多的客户的身上都出現了,造成了无法去不错的听轻音乐看电视剧,实际上这个时候可以去音频管理器设定一出来处理。win10插上耳机还外放:最先,双击鼠标“此电脑”,随后在菜单栏中点击“ 计算机—卸载或更改程序 ”...
    99+
    2023-07-15
  • Android事件冲突解决悬浮窗拖拽处理方案
    目录需求场景问题暴露解决思路需求场景 最近项目中要做一个音乐播放悬浮按钮的功能,最终实现效果如下: 问题暴露 悬浮窗布局文件就不放了,就是水平LinearLayout里面放几个I...
    99+
    2023-03-01
    Android事件冲突悬浮窗拖拽 Android 事件冲突
  • React 中使用 RxJS 优化数据流的处理方案
    目录正文一般来说,处理组件中的数据流无非三种情况:下面我们看一个很简单的例子:那么,问题来了,使用数据流的方式来处理数据有什么好处呢?正文 现在我们比较熟悉的是使用 functio...
    99+
    2023-02-17
    React RxJS 优化数据流 React RxJS
  • C++中字符串处理问题的解决方法
    C++中字符串处理问题的解决方法概述:在C++编程中,字符串的处理是一个常见的问题,涉及到字符串的截取、拼接、查找、替换等操作。本文将介绍几种常用的解决方法,并提供具体的代码示例。一、字符串截取字符串截取是指从一个字符串中获取一部分子串。在...
    99+
    2023-10-22
    C++ 解决方法 字符串处理
  • MySQL中事务处理的常见问题和解决方案
    MySQL中事务处理的常见问题和解决方案在数据库操作中,事务处理是非常重要的,它可以确保数据库操作的一致性和完整性。然而,在MySQL中进行事务处理时,常常会遇到一些问题。本文将介绍常见的MySQL事务处理问题,并提供相应的解决方案。问题一...
    99+
    2023-10-22
    解决方案 问题 事务处理
  • 图像处理中遇到的Python问题及解决方案
    图像处理中遇到的Python问题及解决方案摘要:图像处理在计算机视觉和图形学领域具有广泛的应用。Python作为一种流行的编程语言,也广泛应用于图像处理中。然而,当我们在图像处理中使用Python时,可能会遇到一些常见的问题。本文将介绍一些...
    99+
    2023-10-22
  • JavaScript 错误处理中的常见陷阱:及其解决方案
    ...
    99+
    2024-04-02
  • Java - 处理“拒绝访问“错误的解决方案
    Java - 处理"拒绝访问"错误的解决方案 在Java编程中,当使用FileOutputStream类时,有时会遇到"拒绝访问"(Access Denied)的错误。这通常是由于操作系统权限限制或文...
    99+
    2023-09-29
    java python 开发语言 Java
  • 解决Feign获取异常信息的处理方案
    目录Feign获取异常信息解决方案一、客户端接口指定熔断器处理工厂类二、ArticleFallBackFactory三、ArticleClientImplFeign中 fallbac...
    99+
    2024-04-02
  • 关于WCF异常处理解决方案是怎样的
    这期内容当中小编将会给大家带来有关关于WCF异常处理解决方案是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。异常处理在我们的程序中是不可缺少的,异常可以反馈我们信息,如果还不知道WCF异常的朋友请看...
    99+
    2023-06-17
  • Java处理延时任务的解决方案有哪些
    本篇内容介绍了“Java处理延时任务的解决方案有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数据库轮询原理通过一个线程定时的扫描数据库...
    99+
    2023-06-30
  • Win7计算机管理无法打开的解决方案
    当我们使用Win7系统右键点击计算机管理时,有时会弹出文件没有相关程序执行操作无法打开管理系统,只能绕道从控制面板打开,非常麻烦和不方便,下面由小边介绍Win7计算机管理无法打开解决方案。Win7计算机管理无法打开的解决方案按Win+R快捷...
    99+
    2023-07-10
  • 解决android手机导出的通讯录vcf文件乱码方法
    要解决Android手机导出的通讯录vcf文件乱码的问题,可以尝试以下方法:1. 修改编码格式:打开vcf文件,使用文本编辑器(例如...
    99+
    2023-09-08
    Android
  • PHP Dompdf中文字符显示异常的解决方案
    解决 PHP Dompdf 中文字符显示异常的问题 在使用 PHP Dompdf 进行中文 PDF 生成时,经常会遇到中文字符显示异常的问题,比如乱码或者无法显示中文。这个问题的根源主...
    99+
    2024-03-05
    中文 php dompdf
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作