Android WebView ошибка с зумом - PullRequest
       5

Android WebView ошибка с зумом

1 голос
/ 12 октября 2011

WebView не работает должным образом после масштабирования (выполняется с помощью касания). Воспроизвести после увеличения страницы при загрузке страницы, но не разрешать прокрутку просмотра после увеличения (это приведет к тому, что проблема не появится). Нажмите на ссылку. Ссылка подсвечивается, как будто она нажата, но WebView не переходит на следующую страницу (визуально она остается на том же URL). Вот тестовый проект source и apk , чтобы воспроизвести это.

Воспроизведено на Nexus S и HTC wildfire 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. Макет XML в исходниках и apk изменен в соответствии с предложениями из комментариев (высота теперь является статическим значением)

Ответы [ 2 ]

0 голосов
/ 13 октября 2011

В макете 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 попробуйте другие страницы.На моем телефоне открывается браузер по умолчанию.Но моя личная страница работает отлично:)

0 голосов
/ 12 октября 2011

Я считаю, что вам нужно исправить ваш файл 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...