Eljas
Eljas

Reputation: 1207

Zoom in mobile websites and webview

Is it possible to add zoom to mobile targeted website?

I use webview and I need that mobile website's text is bigger and I think this can be solution if I'm able to zoom in. But Web.getSettings().setBuiltInZoomControls(true);is not working. It doesn't allow me to zoom.

Edit: Here is what I have now:

    Web = (WebView) findViewById(R.id.webView1);
    Web.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    Web.getSettings().setJavaScriptEnabled(true);
    Web.getSettings().setBuiltInZoomControls(true);
    Web.getSettings().setPluginsEnabled(true);
    Web.getSettings().setAllowFileAccess(true);
    Web.loadUrl(URL);
    Web.getSettings().setCacheMode( WebSettings.LOAD_NO_CACHE );
    Web.getSettings().setRenderPriority( RenderPriority.HIGH );
    Web.setWebViewClient(new WebViewClient());
    Web.setWebViewClient(new ErrorWebViewClient());

Edit2: This is how I tried Mocialov Boris's answer:

View zoom;  
FrameLayout mContentView;

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

Web = (WebView) findViewById(R.id.webView1);
Web.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
Web.getSettings().setJavaScriptEnabled(true);
Web.getSettings().setPluginsEnabled(true);
Web.getSettings().setAllowFileAccess(true);
Web.loadUrl(URL);
Web.getSettings().setSupportZoom(true);
Web.getSettings().setCacheMode( WebSettings.LOAD_NO_CACHE );
Web.getSettings().setRenderPriority( RenderPriority.HIGH );
Web.setWebViewClient(new WebViewClient());
Web.setWebViewClient(new ErrorWebViewClient());

mContentView = (FrameLayout) getWindow().getDecorView().findViewById(android.R.id.content);
zoom = Web.getZoomControls();
mContentView.addView(zoom);
zoom.setVisibility(View.GONE);

Upvotes: 1

Views: 1335

Answers (1)

user849998
user849998

Reputation:

In this solution it is important to have implemented handler, because it will do changes to your UI from some thread. You said that app was crashing after you added this mContentView.addView(zoom); line, I assume that that was the problem

View zoom;  
FrameLayout mContentView;

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

    Web = (WebView) findViewById(R.id.webView1);
    Web.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    Web.getSettings().setJavaScriptEnabled(true);
    Web.getSettings().setPluginsEnabled(true);
    Web.getSettings().setAllowFileAccess(true);
    Web.loadUrl(URL);
    Web.getSettings().setSupportZoom(true);
    Web.getSettings().setCacheMode( WebSettings.LOAD_NO_CACHE );
    Web.getSettings().setRenderPriority( RenderPriority.HIGH );
    Web.setWebViewClient(new WebViewClient());
    Web.setWebViewClient(new ErrorWebViewClient());

    mContentView = (FrameLayout) getWindow().getDecorView().findViewById(android.R.id.content);
    zoom = Web.getZoomControls();
    mContentView.addView(zoom);
    zoom.setVisibility(View.GONE);
}

private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            System.out.println("got msg");
            switch (msg.what) {
            case 0:
                mContentView.addView(zoom);
                break;
            }
        }
}

Upvotes: 1

Related Questions