如何在Android Studio的App WebView Fragment中仅显示桌面模式?
实现WebView桌面模式的Fragment修改代码
要让WebView加载桌面版网页,核心是让网站识别当前请求来自桌面设备,同时配置WebView的视图适配参数。以下是修改后的完整代码:
public class kvkfragment extends Fragment { ProgressBar progressBar; public kvkfragment() { } @SuppressLint("SetJavaScriptEnabled") @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View myView = inflater.inflate(R.layout.fragment_kvkfragment, container, false); progressBar = myView.findViewById(R.id.progressBar); WebView mywebView = myView.findViewById(R.id.mywebView); WebSettings webSettings = mywebView.getSettings(); // 核心:配置桌面模式相关参数 // 1. 设置桌面端User Agent,让网站识别为桌面设备 webSettings.setUserAgentString("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"); // 2. Android 10及以上可直接启用桌面模式标识 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { webSettings.setDesktopMode(true); } // 原有适配配置保留,确保桌面网页正常显示 webSettings.setJavaScriptEnabled(true); webSettings.setUseWideViewPort(true); webSettings.setLoadWithOverviewMode(true); webSettings.setSupportZoom(true); webSettings.setBuiltInZoomControls(true); webSettings.setDisplayZoomControls(false); mywebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); mywebView.setScrollbarFadingEnabled(false); mywebView.setInitialScale(1); mywebView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); progressBar.setVisibility(View.VISIBLE); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); progressBar.setVisibility(View.GONE); } }); // 注意:先配置完所有参数再加载URL mywebView.loadUrl("https://www.google.co.in"); return myView; } }
关键修改说明
- 调整User Agent:替换为最新的桌面Chrome浏览器UA,确保网站返回桌面版页面
- 新增桌面模式开关:针对Android 10及以上系统,调用
setDesktopMode(true)直接开启系统级桌面模式支持 - 调整加载顺序:将
loadUrl移到所有配置完成后执行,避免参数未生效就加载页面
内容的提问来源于stack exchange,提问作者Gopal Lal
相关产品推荐
相关产品推荐

