如何使用KitKat使文本适合WebView中的屏幕(文本换行)

时间:2013-11-07 12:18:56

标签: android webview android-4.4-kitkat

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

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

One from Galaxy Nexus (Android 4.3)

One from Nexus 5 (Android 4.4 and WebView based on Chromium)

您是否知道在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>

2 个答案:

答案 0 :(得分:12)

看起来这是使用NARROW_COLUMNS。这是KitKat中的deprecated

然而,添加了一个新的布局算法,可以解决这个问题,这里有一个例子: 的 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);
}

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

大多数异议似乎都是在移动设备上显示桌面网站的一般浏览器问题。他们喜欢旧的方式,但我还没有看到其他浏览器执行文本换行算法正在做的事情。

答案 1 :(得分:1)

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