управление масштабированием веб-просмотра - PullRequest
3 голосов
/ 01 июня 2011

У меня есть веб-просмотр, по которому можно перейти по встроенной ссылке. Это ссылка на изображение, и я включаю масштабирование при переходе к этому изображению и отключаю его, когда пользователь возвращается. Это работает нормально, за исключением элементов управления масштабированием. По какой-то причине они немного задерживаются, когда я возвращаюсь, и это позволяет пользователю связываться с уровнем масштабирования веб-просмотра, который не предназначен для увеличения. Как только они исчезают, они не возвращаются, мне просто нужен какой-то способ немедленно отключить их, а не ждать, пока они исчезнут. Есть ответы?

Я отключаю масштабирование так:

contentView.getSettings().setJavaScriptEnabled(false);
contentView.getSettings().setSupportZoom(false);
contentView.getSettings().setBuiltInZoomControls(false);

Edit:

Это также вызывает сбой при попытке вернуться к предыдущему действию, когда элементы управления все еще отображаются. Вот аварийный дамп, если это поможет решить любую проблему

FATAL EXCEPTION: main
java.lang.IllegalArgumentException: Receiver not registered: android.widget.ZoomButtonsController$1@47979810
    at android.app.ActivityThread$PackageInfo.forgetReceiverDispatcher(ActivityThread.java:859)
    at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:869)
    at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:331)
    at android.widget.ZoomButtonsController.setVisible(ZoomButtonsController.java:404)
    at android.widget.ZoomButtonsController$2.handleMessage(ZoomButtonsController.java:178)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:143)
    at android.app.ActivityThread.main(ActivityThread.java:5073)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    at dalvik.system.NativeStart.main(Native Method)

Редактировать2:

Вот часть кода, не уверен, насколько это помогает

В функции onCreate действия

contentView = (WebView) findViewById(R.id.message_content);
contentView.setWebViewClient(new WebViewClient()
{
    @Override
    public void onPageFinished(WebView view, String url )
    {
        if ( !url.startsWith("http") )
        {
            view.clearHistory();
        }
        else
        {
            contentView.getSettings().setJavaScriptEnabled(true);
            contentView.getSettings().setSupportZoom(true);
            contentView.getSettings().setBuiltInZoomControls(true);
            topButton.setText("Go back");
            topButton.setOnClickListener(backClick);
        }
    }

    @Override
    public boolean shouldOverrideUrlLoading( WebView view, String url )
    {
        view.loadUrl(url);              
        return true;
    }
});

И вот как я возвращаюсь со страницы с возможностью масштабирования

@Override
public boolean onKeyDown( int keyCode, KeyEvent event )
{
    if ( keyCode == KeyEvent.KEYCODE_BACK )
    {
        if ( contentView.canGoBack() )
        {
            contentView.getSettings().setJavaScriptEnabled(false);
            contentView.getSettings().setSupportZoom(false);
            contentView.getSettings().setBuiltInZoomControls(false);
            topButton.setText("Add a comment");
            topButton.setOnClickListener(postClick);
            contentView.goBack();
            return true;
        }
    }
    return super.onKeyDown(keyCode, event);
}

1 Ответ

0 голосов
/ 19 августа 2012

Вы всегда можете отключить встроенные элементы управления масштабированием и реализовать свои собственные.

...