Увеличение мобильных веб-сайтов и веб-просмотра - PullRequest
1 голос
/ 05 декабря 2011

Можно ли добавить зум на целевой веб-сайт для мобильных устройств?

Я использую webview, и мне нужно, чтобы текст на мобильном сайте был больше, и я думаю, что это может быть решением, если я смогу увеличить масштаб. Но Web.getSettings().setBuiltInZoomControls(true); не работает. Это не позволяет мне масштабировать.

Edit: Вот что у меня сейчас:

    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: Вот как я попробовал ответ Бориса Моциалова:

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);

1 Ответ

1 голос
/ 05 декабря 2011

В этом решении важно реализовать обработчик, потому что он будет вносить изменения в ваш пользовательский интерфейс из какого-то потока. Вы сказали, что приложение зависало после добавления этой строки mContentView.addView(zoom);, я предполагаю, что это была проблема

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;
            }
        }
}
...