8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

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

Snziv Gupta 1月前

20 0

我使用 Cordova 3.6.3 版和 JQuery 开发了 Cordova 应用程序。唯一一个我仍然无法获得最佳解决方案的问题是,当我在 Android 4.4+ 上测试我的应用程序时,有些用户喜欢

我使用 Cordova 3.6.3 版和 JQuery 开发了 Cordova 应用程序。唯一一个我仍然无法获得最佳解决方案的问题是,当我在 Android 4.4+ 上测试我的应用程序时,有些用户喜欢将设备设置 > 显示 > 字体大小中的字体大小更改为大于正常值。这导致我的应用程序布局显示不好看(最佳显示是字体大小设置为正常时)。但对于 4.4 之前的 Android(4.3、4.2...),字体大小设置没有效果,因此应用程序在旧版本上显示完美。

我已经应用到我的应用程序的解决方案是创建自定义插件来检测配置改变,它将检测用户是否使用 Android 4.4+,并且如果他们将字体大小设置成任何不正常的设置,我将使用 JQuery 将字体大小强制设置为指定的大小。

例如....

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

这可以正常工作,但有时在页面加载后,css 不会按我的意愿更改。假设该页面上有 30 个 div+,那么我必须插入上述语句 30 次,这不必要地花费了太多时间。

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

我也尝试过另一种方法,但不起作用

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

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

帖子版权声明 1、本帖标题:在 Android 4.4+ 上运行时,如何忽略 Cordova App 的字体大小设置变化?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Snziv Gupta在本站《cordova》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 这已经很旧了,但是由于我在 2019 年仍然需要​​它,所以其他人可能也需要它。

    如果出于某种原因您不想(或不能)为单个功能集成整个插件,以下是 usePreferredTextZoom(false) 提取的功能(它来自基于 Cordova 的 MobileFirst 7.1 应用程序)。当然,所有功劳都归于开发该插件的人。

    在您的 Cordova Android 应用程序的主 Java 文件中, onInitWebFrameworkComplete 通过添加 preventDeviceZoomChange() 方法调用来更改方法:

    public void onInitWebFrameworkComplete(WLInitWebFrameworkResult result){
        if (result.getStatusCode() == WLInitWebFrameworkResult.SUCCESS) {
            super.loadUrl(WL.getInstance().getMainHtmlFilePath());
            preventDeviceZoomChange();
        } else {
            handleWebFrameworkInitFailure(result);
        }
    }
    

    在同一个类中,定义 preventDeviceZoomChange() 方法:

    private void preventDeviceZoomChange() {
        try {
            Method getSettings = (this.appView).getClass().getMethod("getSettings");
            Object wSettings = getSettings.invoke(this.appView);
            Method setTextSize = wSettings.getClass().getMethod("setTextSize", WebSettings.TextSize.class);
            setTextSize.invoke(wSettings, WebSettings.TextSize.NORMAL);
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    1. p0

    2. p1

  • 这是一个新的解决方案,希望它能帮助你。 解决方案

     //in base activity add this code.
    public  void adjustFontScale( Configuration configuration) {
    
        configuration.fontScale = (float) 1.0;
        DisplayMetrics metrics = getResources().getDisplayMetrics();
        WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
        wm.getDefaultDisplay().getMetrics(metrics);
        metrics.scaledDensity = configuration.fontScale * metrics.density;
        getBaseContext().getResources().updateConfiguration(configuration, metrics);
    
    }
    
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        adjustFontScale( getResources().getConfiguration());
    }
    
  • 尝试从你的 index.html 中删除这个:

    目标密度dpi = 设备dpi

    祝你好运。

  • @PostImpatica Paulo Henrique Arruda 下面的答案对我有用。

  • 所以你只想忽略系统字体偏好设置。这是解决方案,我使用 MobileAccessibilty 插件 来忽略系统字体偏好设置。

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

    if(window.MobileAccessibility){
        window.MobileAccessibility.usePreferredTextZoom(false);
    }
    

    usePreferredTextZoom(false) 将忽略系统字体偏好设置。:) :) :)

  • Roe 1月前 0 只看Ta
    引用 8

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

  • 我希望这有帮助!

    在科尔多瓦 8.0 中:

    编辑 MainActivity.java

    在文件头中添加引用:

    import android.webkit.WebView;
    import android.webkit.WebSettings;
    

    在loadUrl方法后添加代码:

    loadUrl(launchUrl);
    
    WebView webView = (WebView)appView.getEngine().getView();
    WebSettings settings = webView.getSettings();
    
    settings.setTextSize(WebSettings.TextSize.NORMAL);
    

    只有这种方法对我有用。

返回
作者最近主题: