Изменение ориентации WebView без изменения размера веб-страницы - PullRequest
1 голос
/ 07 ноября 2011

Я делаю приложение для Android, и если я нахожусь в самом верху моего WebView и пытаюсь переключить свой телефон в альбомный режим, то он не будет изменять размер веб-страницы, чтобы соответствовать экрану моего телефона.Это займет только половину экрана, но тогда, если я прокручиваю немного вниз и переключаюсь в ландшафтный режим, все работает нормально!

У меня есть android:configChanges="orientation" в Манифесте Android, чтобы предотвратить сброс веб-просмотра при изменении ориентации.

^^ Примечание ^^
Даже если вы десятая частьв дюйме от верхней части страницы он будет работать нормально, но если вы находитесь в верхней части страницы, он не будет работать.

Это класс, с которым у меня проблемы:

package my.app.name;

import my.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class ConverterCatalogActivity extends Activity {
    WebView browser;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        /* Set the Content View */
        setContentView(R.layout.main);

        /* Get the WebView */
        WebView wv1 = (WebView) findViewById(R.id.wv1);

        /* Activate JavaScript */
        wv1.getSettings().setJavaScriptEnabled(true);
        wv1.canGoBack();
        browser=(WebView)findViewById(R.id.wv1);
        browser.loadUrl("file:///android_asset/index.html");

        /* Prevent WebView from Opening the Browser */
        wv1.setWebViewClient(new InsideWebViewClient());
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // We do nothing here. We're only handling this to keep orientation
        // or keyboard hiding from causing the WebView activity to restart.
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK){
        if(browser.canGoBack()){
                browser.goBack();
                return true;
        }
    }

    return super.onKeyDown(keyCode, event);
}


/* Class that prevents opening the Browser */
private class InsideWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
}

Вот скриншот в альбомном режиме.http://i39.tinypic.com/1rrc7q.png

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

У меня были проблемы с WebViews, делающими это раньше. Попробуйте измерить вид в OnOrientationChanged, и это может решить вашу проблему!

0 голосов
/ 28 апреля 2016
@Override
public void onSaveInstanceState(Bundle outState) {
    ((WebView) mView.findViewById(R.id.webView)).saveState(outState);
}

@Override
public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
    super.onViewStateRestored(savedInstanceState);
    mWebView.restoreState(savedInstanceState);
}
...