10

我在使用 Android 4.4 的 WebView 中遇到问题。在 KitKat 之前,文本会自动适应 web 视图中的所有设备分辨率。但是今天它不再自动适应 4.4。我认为这是因为基于 Chromium 和 KitKat 的 WebView 的更新。

这是同一页面的2个屏幕截图:

来自 Galaxy Nexus (Android 4.3) 的一款

来自 Nexus 5 的一个(Android 4.4 和基于 Chromium 的 WebView)

您知道是否有一个新选项可以在 webview 中将文本与屏幕匹配?

注意:我不认为我的布局与我的问题有关,但无论如何:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</RelativeLayout>
4

2 回答 2

15

看起来这是在使用NARROW_COLUMNS. 这在 KitKat中已被弃用。

但是,添加了一种新的布局算法可能能够解决这个问题,这里有一个例子: https ://github.com/GoogleChrome/chromium-webview-samples

主要代码是:

// Use WideViewport and Zoom out if there is no viewport defined
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);

settings.setLayoutAlgorithm(LayoutAlgorithm.TEXT_AUTOSIZING);

另一个选项是启用捏缩放:

// Enable pinch to zoom without the zoom buttons
settings.setBuiltInZoomControls(true);

if(Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
    // Hide the zoom controls for HONEYCOMB+
    settings.setDisplayZoomControls(false);
}

新的布局算法可能无法解决所有问题,并且不清楚如何可靠地模仿旧的包装行为。

大多数反对意见似乎是在移动设备上显示桌面网站的一般浏览器问题。他们喜欢旧的方式,但我还没有看到其他浏览器能像文本换行算法那样做。

于 2013-11-09T16:09:58.683 回答
4

如果您可以编辑 html(例如使用简单的字符串替换),请将样式word-wrap:break-word添加到文本容器 html 元素。例如:如果 html 正文中的顶级元素是<p>,则更改为<p style="word-wrap: break-word;">. 然后,webview 将环绕文本并适合屏幕。

于 2019-01-18T05:34:54.873 回答