当前位置: 首页 > 知识库问答 >
问题:

根据智能手机的屏幕大小调整字体大小 React 原生

栾鸣
2023-03-14

嘿,伙计们,我使用const {宽度,高度} = 尺寸.get('窗口'); 根据屏幕宽度大小调整我的字体。像这样使用....

fontSize:width/24

它在iPhone和android设备上看起来不错,比如5.5英寸的设备,但在我的Galaxy s9上看起来很糟糕。我想根据屏幕设置我的字体,它可以自行调整..我该怎么做

共有3个答案

昌山
2023-03-14

为了访问设备的像素密度和字体比例,您可以根据文档从PixelRatio中受益。

如文档所示,PixelRatio.get()为您提供设备像素密度:

var dynamic_fontSize = 20;
if(PixelRatio.get() === 1) {  // mdpi Android devices
    dynamic_fontSize = 12; 
} else if(PixelRatio.get() === 1.5) {  // hdpi Android devices
    ... 
}
else { ...

另一个想法是使用roundToNearestPixel()来利用布局大小。假设您想要调整元素的大小,使其在dp中占据屏幕宽度的98%,在dp中占据屏幕高度的10%:

export const widthPercentageToDP = widthPercent => {
  const screenWidth = Dimensions.get('window').width;
  // Convert string input to decimal number
  const elemWidth = parseFloat(widthPercent);  
  return PixelRatio.roundToNearestPixel(screenWidth * elemWidth / 100);
};

export const heightPercentageToDP = heightPercent => {
  const screenHeight = Dimensions.get('window').height;
  // Convert string input to decimal number
  const elemHeight = parseFloat(heightPercent); 
  return PixelRatio.roundToNearestPixel(screenHeight * elemHeight / 100);
};


此线程为您提供了一个清晰的示例:https://stackoverflow.com/a/35074379/4687359

商开宇
2023-03-14

使用像这样的响应式图书馆,可以更好地处理事情。

反应原生大小问题

例如:

import { scale, verticalScale, moderateScale } from 'react-native-size-matters';

const Component = props =>
    <View style={{
        width: scale(30),
        height: verticalScale(50),
        padding: moderateScale(5)
    }}/>;

因此,所有设备看起来都会更好。使用verticalScale定义与设备高度相关的内容。规模可以用于正常的事情..然后有一个自定义选项moderateScale,您也可以手动定义缩放比例。

有关更多详细信息,请参阅:扩展React Native应用程序

PS:还有其他选项,您可以手动定义自定义类以获取PixelRatio和所有内容。但这是一种直接的方法。

参考像素比率法

荀嘉熙
2023-03-14

那么最好的选择是使用vmax和vmin单位。

vmin: 最小边的 1/100, vmax: 最大边的 1/100

看看这里

 类似资料:
  • 问题内容: 它由9个框组成,中间带有文本。我已经制作了框,以便它们可以随着屏幕大小的变化而调整大小,以便始终保持在同一位置。 但是,即使我使用百分比,文本也不会调整大小。 如何调整文本的大小,使其在整个页面上始终具有相同的比例? 这是处理多种分辨率的合适解决方案吗?还是我应该在CSS中进行很多检查并为每种媒体类型设置许多布局? ``` html, body { } #launchmain { }

  • 我正在尝试将文本放入一个有限的空间(黄色容器)。如何在Android中解决这个问题? 在iOS中,该问题通过adjustsFontSizeToFit={true}解决。 我的代码:

  • 我正在使用一个库从url获取图像并将其作为位图图像保存到缓存中。但是当我检索该图像时,它非常小。如何根据手机屏幕增加位图图像的高度和宽度?这是创建位图的类。

  • 我想根据响应本机中的屏幕宽度更改。 我想做这样的东西,预期的结果是在向添加数字时变得更小。 我尝试的资源: React Native响应字体大小 https://reactnativeexample.com/responsive-fontsize-based-on-screen-size-of-the-device-in-react-native/ 更多的不起作用。

  • 我是一个新的android开发和我正在尝试创建和应用程序与网格菜单,菜单。 当前依赖项:compile fileTree(目录:“libs”,include:['*.jar'])testCompile“junit:junit:4.12”编译组:“org.apache.httpcomponents”,名称:“httpclient-android”,版本:“4.3.5.1”编译组:“cz.mseber

  • 我有一个JFrame,其中包含一个面板。我还向面板添加了。到目前为止,我所做的是在我的框架上使用来对调整窗口大小做出反应。 下面是我的代码片段: 当更改框架的大小时,的大小可以完全调整。但是当我最大化我的框架,图表面板不会改变它的大小!它保持在最大化之前的时刻。因此,当我再次“取消最大化”我的框架时,图表面板被最大化,这导致了问题,图表将不再适合图表面板。所有这些调整尺寸的事情似乎都“落后一步”.