Android Webview - 即使在平板电脑上也可以加载移动版本

时间:2016-08-29 15:13:45

标签: android xml android-layout mobile webview

我在Android中使用Web View遇到了问题。我正在尝试使用Web View创建一个简单的应用程序,这个应用程序只需要在Web视图中加载一个网站。在移动设备(如手机)上,它可以很好地工作,但是当我尝试在WebView中从平板电脑(例如Nexus 10)打开应用程序时,它会加载网站的移动版本,而不是平板电脑版本。我搜索并没有找到这个问题的答案。我还检查了网站上的元标记,但它似乎就在那里,这不是问题。

这是我的.java文件:

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {
    private static WebView view;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getActionBar().setIcon(R.drawable.icon);

        String url = "http://hoinarim.ro/";

        view = (WebView) this.findViewById(R.id.webView);

        view.setFocusable(true);
        view.setFocusableInTouchMode(true);
        view.getSettings().setJavaScriptEnabled(true);

        //improve webview
        view.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
        view.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        view.getSettings().setAppCacheEnabled(true);
        view.getSettings().setDomStorageEnabled(true);
        view.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);

        view.getSettings().setUseWideViewPort(false);
        view.getSettings().setLoadWithOverviewMode(true);

        view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        view.getSettings().setSavePassword(true);
        view.getSettings().setSaveFormData(true);
        view.getSettings().setEnableSmoothTransition(true);

        view.getSettings().setDatabaseEnabled(true);
        view.getSettings().setUseWideViewPort(true);
        view.setWebViewClient(new WebViewClient());
        view.loadUrl(url);
        view.setHorizontalScrollBarEnabled(false);

        view.setOnTouchListener(new View.OnTouchListener() {
            public float m_downX;

            public boolean onTouch(View v, MotionEvent event) {

                if (event.getPointerCount() > 1) {
                    //Multi touch detected
                    return true;
                }

                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                    {
                        // save the x
                        m_downX = event.getX();
                    }
                    break;

                    case MotionEvent.ACTION_MOVE:
                    case MotionEvent.ACTION_CANCEL:
                    case MotionEvent.ACTION_UP: {
                        // set x so that it doesn't move
                        event.setLocation(m_downX, event.getY());
                    }
                    break;

                }

                return false;
            }
        });
    }


    @Override
    public void onBackPressed() {
        if (view.canGoBack()) {
            view.goBack();
        }
        else
        {
            super.onBackPressed();
        }
    }
}

这是我的.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="hoinarimapp.hoinarim.MainActivity">

    <WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/webView"/>
</RelativeLayout>

知道如何使这项工作?真的很令人沮丧。

1 个答案:

答案 0 :(得分:0)

我不知道这是否会有所帮助,但这会加载网站的桌面版本。

String userAgent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/20100101 Firefox/4.0";
webview.getSettings().setUserAgentString(userAgent);

无论如何,我希望这会有所帮助:D