gpt4 book ai didi

android - 放大 KitKat WebView 后不再有文本重排

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:57 25 4
gpt4 key购买 nike

我有一个严重依赖 WebView 的应用程序。KitKat 更新后,用户报告说该应用在放大或缩小后不再重排文本。我查看了文档,发现发生了很多变化,但是虽然它谈论了很多关于缩放和缩放的内容,但没有提到任何关于文本重排的内容。似乎一旦设置了视口(viewport),缩放就是平移和缩放的事情,并且不再有缩放后文本重排的选项。有什么解决办法吗?

最佳答案

KitKat Chromium WebView 不会重排文本。如果您担心文本的易读性,请参阅 migration guide 中的“NARROW_COLUMNS 和 SINGLE_COLUMN 不再受支持”部分。建议的解决方案是使用文本自动调整大小。

如果你真的想恢复这种效果,那么你需要做这样的事情:

  1. 将您的所有内容放在 <div id="contentRoot"> </div>
  2. 实现 onScaleChanged

    class MyWebViewClient extends WebViewClient {
    boolean scaleChangedRunnablePending = false;

    // Other code here

    @Override
    void onScaleChanged(final WebView webView, fload oldScale, float newScale) {
    if (scaleChangedRunnablePending) return;
    view.postDelayed(new Runnable() {
    @Override
    public void run() {
    webView.evaluateJavaScript("recalculateWidth();", null);
    scaleChangedRunnablePending = false;
    }
    }, 100);
    }
    }

    // Don't forget to webView.setWebViewClient(new MyWebViewClient());
  3. 使用以下 JavaScript

    function recalculateWidth() {
    $("#contentRoot").width(window.innerWidth);
    }

    或者,您也可以尝试修改视口(viewport)元标记。

上面的代码应该稍微延迟执行回流(这是为了将不必要的重新布局的数量降到最低)。

关于android - 放大 KitKat WebView 后不再有文本重排,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19986305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com