簡體   English   中英

如何將字體大小設置為“更大”或系統默認值的 140%

[英]How to set font-size to "larger" or 140% of system default

我想為我的用戶提供一種顯示某些<Text/>元素的可能性,其字體大小比系統默認值大。 文檔只為該樣式提供了一個編號。

我想顯示帶有 web-css“大”或“更大”值的文本,或者可能是原始字體大小的 140%。

我在 SO 和 3rd 方庫上發現了幾個問題,例如responsive-fontsize ,但它們似乎都與我無關。

做我想做的最簡單的方法是什么?

  1. 您為每個組件定義 styles,例如您描述的<Text /> 這是一篇文章
  2. 您可以將fontSize設置為一種公式,例如: style={{fontSize: 10*1.4}}style={{fontSize: x*1.4}}其中 x 是您的全局變量。

PS 通常,您不能只以 % 為單位使字體變大

您可以使用 em 作為相對大小。

使用 em,您可以說出您希望文本變大或變小多少倍。 例如:

0.5em 將是您初始大小的一半,1em 將是相同大小,2em 將是兩倍大小。

<Text style={{fontSize: `${relativeSize}em`}}>
      I am {relativeSize} times bigger than I was supposed to be
</Text>

這是一個工作示例: https://snack.expo.io/@andrpr/bigger-text-example

如果您想使用百分比,您可以將它們轉換為您希望文本的大小:

const percentage = 140;
const relativeSize = percentage/100;

https://snack.expo.io/@andrpr/percentage-bigger-text-example

我認為您正在尋找的是PixelRatio ,它可以讓您更好地控制 fonts 尺寸。 否則它可以幫助到達您帖子的人。

PixelRatio讓您可以訪問設備的像素密度和字體比例。

因此,在您獲得所需的信息后,您可以使用它。

您可以在此答案中找到示例

舉個例子:

 var React = require('react-native'); var {StyleSheet, PixelRatio} = React; var FONT_BACK_LABEL = 18; if (PixelRatio.get() <= 2) { FONT_BACK_LABEL = 14; } var styles = StyleSheet.create({ label: { fontSize: FONT_BACK_LABEL } });

我將創建一個自定義Text組件,將定義的 textSize 樣式轉換為調整后的比例。 您可以從 Context-Provider、Redux 或 Recoil 等處獲得規模。

像這樣的東西(未經測試):

export function MyText(props) {
  const { fontScale } = useContext(TextContext);

  return (
    <Text {...props} style={[...style, { fontSize: style.fontSize ? style.fontSize * fontScale : undefined }] />
  );
}

經過一些試驗,我發現默認字體大小 - 如果未設置並且至少對於 Android - 對應於14

從這個基礎可以將大小增加到 18,以獲得大約 140% 的原始大小。

好消息是字體會根據系統范圍的字體大小進行縮放。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM