我正在使用React Native开发既适用于iOS又适用于Android的应用程序,并且我试图防止应用程序中特定设备的显示比例缩放。
对于文本/字体大小缩放,将以下代码放入根级别的App.js文件中可解决iOS和Android的问题:
if (Text.defaultProps == null) {
Text.defaultProps = {};
}
Text.defaultProps.allowFontScaling = false;
然而,Android设备仍然应用以下显示大小设置:我已尝试(不成功地)将我在以下问题的答案中找到的各种“解决方案”组合起来解决此问题:Change the system display size programatically Android NDisabling an app or activity zoom if Setting -> Display -> Display size changed to Large or smallhow to prevent system font-size changing effects to android application?我经常会提到扩展Activity类的BaseActivity类。 我的理解是,在该类中,我将编写一个方法(称之为adjustDisplayScale),以更改从资源获取的上下文的Configuration,并且然后我将在MainApplication.java文件中的onCreate()方法中调用adjustDisplayScale,在super.onCreate()之后调用。目前,在此目录中,我只有两个文件-MainApplication.java和MainActivity.java。我尝试创建新模块并关联包文件以实现adjustDisplayScale,按照这些说明操作没有起作用:https://facebook.github.io/react-native/docs/text.html我尝试在onCreate()中实现adjustDisplayScale的功能,例如下面的代码,但它没有起作用:@Override
public void onCreate() {
super.onCreate();
Context context = getApplicationContext();
Resources res = context.getResources();
Configuration configuration = res.getConfiguration();
configuration.fontScale = 1f;
DisplayMetrics metrics = res.getDisplayMetrics();
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = 1f;
configuration.densityDpi = (int) res.getDisplayMetrics().xdpi;
context = context.createConfigurationContext(configuration);
SoLoader.init(this, /* native exopackage */ false);
}
一个可能很有前途的答案如下:
protected override void AttachBaseContext(Context @base) {
var configuration = new Configuration(@base.Resources.Configuration);
configuration.FontScale = 1f;
var config = Application.Context.CreateConfigurationContext(configuration);
base.AttachBaseContext(config);
}
但是当我尝试利用它时,出现了有关无法识别符号@base的错误。
一些背景... 我在这个项目中的99%工作都是在JavaScript / React Native中完成的,我对与Android开发相关的Resources
,Context
,Configuration
和DisplayMetrics
等内容几乎一无所知,而我上一次使用Java编写代码是10年前。我已经花费了许多痛苦的时间来尝试解决这个问题,任何帮助都将不胜感激。
附:我很清楚辅助功能设置存在的原因,请不要在那些“答案”中浪费时间给我解释为什么我需要修复我的UI以使其与辅助功能设置兼容,而不是禁用它们。
attachBaseContext
复制到所有活动中? - Ali_Habeeb