带有缩放功能的Android WebView漏洞

时间:2011-10-12 17:04:19

标签: android webview

在缩放后(通过触摸执行),WebView似乎无法正常工作。 重现页面加载缩放页面但不允许在缩放后滚动视图(这将导致问题不显示)。点击链接。链接突出显示它被单击但WebView无法导航到下一页(因此它在视觉上保持在相同的URL上)。 以下是测试项目sourceapk以重现此内容。

转载于Nexus S和HTC野火S. 我会感激任何想法或方向。

package com.test;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class TestWebViewBugActivity extends Activity {

    WebView webView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        webView = (WebView) findViewById(R.id.webView);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setSupportZoom(true);

        webView.setWebViewClient(new WebViewClient() {
        });
        webView.loadUrl("http://google.com/");

    }
}

P.S。 源和apk中的布局XML根据评论中的建议而改变(高度现在是静态值)

2 个答案:

答案 0 :(得分:0)

我相信你需要修复你的Main.xml文件。 WebView中的布局高度为“fill_parent”。当客户端缩放时,WebView会放大影响父级的内容。这是你的Main.XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
>
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />
    <WebView
        android:id="@+id/webView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
    />
</LinearLayout>

尝试为WebView指定一个定义的高度。然后尝试缩放旅馆,看看会发生什么。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
    <WebView
    android:id="@+id/webView"
    android:layout_width="fill_parent"
    android:layout_height="500px"
    />
</LinearLayout>

答案 1 :(得分:0)

在布局main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
        <WebView 
            android:id="@+id/web_view"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1.0" />
</LinearLayout>

活动

WebView webView = (WebView) findViewById(R.id.web_view);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setSupportZoom(true);

webView.loadUrl("http://google.com"); 

它应该工作。 而不是google.com尝试其他页面。在我的手机上打开默认浏览器。但我的私人网页工作正常:)