如何在Android 4.4+上运行时忽略Cordova App的字体大小设置更改?

Vic*_*iva 7 jquery android cordova android-4.4-kitkat

我用Cordova版本3.6.3和JQuery开发了Cordova App.我仍然无法获得最佳解决方案的唯一问题是当我在Android 4.4+上测试我的应用程序时,有些用户喜欢在设置>显示>设备的字体大小时更改字体大小比正常.它导致我的应用程序布局显示丑陋(最好的显示是当字体大小设置正常时).但是对于早于4.4(4.3,4.2 ...)的Android,字体大小设置没有任何影响因此该应用程序在旧版本上完美显示.

我应用到我的应用程序的解决方案是创建自定义插件来检测更改的配置,它将检测用户是否使用Android 4.4+,如果他们将字体大小设置设置为任何不正常的东西,我将使用JQuery将font-size强制为指定的大小.

例子是....

if (font_scale == huge)
{
    $("div").css("font-size","20px !important");
}
Run Code Online (Sandbox Code Playgroud)

这工作正常但有时在页面加载后,css不会像我想要的那样改变.并且假设如果该页面上有30个div +,那么我必须插入如上所述的语句30次并且不必要地花费太多时间.

我只是想知道,有没有其他方法来解决这个问题比使用这个插件更容易?也许使用一些XML配置或CSS3属性可以使我的应用程序正确显示而没有Android 4.4的字体大小设置的副作用?

我尝试过的另一种方法是无效的

  1. 在Androidmanifest.xml> activity标记上插入fontScale
  2. 插入webkit-text-size-adjust:none; 在css

我很想听到任何有助于解决这个问题的想法.

Anu*_*j.T 7

所以你只想忽略系统字体首选项.这是解决方案,我使用MobileAccessibilty插件来忽略系统字体首选项.

您只需在index.js中的onDeviceReady函数中编写以下代码即可

if(window.MobileAccessibility){
    window.MobileAccessibility.usePreferredTextZoom(false);
}
Run Code Online (Sandbox Code Playgroud)

usePreferredTextZoom(false)将忽略系统字体首选项.:) :) :) :)


Pau*_*uda 7

我希望这有帮助!

在科尔多瓦 8.0 中:

编辑 MainActivity.java

在文件头中添加引用:

import android.webkit.WebView;
import android.webkit.WebSettings;
Run Code Online (Sandbox Code Playgroud)

在 loadUrl 方法后添加代码:

loadUrl(launchUrl);

WebView webView = (WebView)appView.getEngine().getView();
WebSettings settings = webView.getSettings();

settings.setTextSize(WebSettings.TextSize.NORMAL);
Run Code Online (Sandbox Code Playgroud)

只有这种方式对我有用。

  • 也适用于 Android13,但“settings.setTextSize(WebSettings.TextSize.NORMAL)”已弃用,您需要使用 settings.setTextZoom(100) (3认同)

och*_*kov 0

  1. 如果您的插件允许您知道字体比例,请将所有字体大小更改为 em 并 $(document.body).css("font-size","70%"); 仅使用一次。

  2. 你介意分享你的插件吗?