我在使用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>
答案 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将环绕文本并适合屏幕。