老路子:看图
说白了就是不用layout的xml写布局,直接用纯代码手写布局实现上面的效果:代码如下:
请将下面代码放到onCreate中动态加载布局即可
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
tvWebViewTitle = new TextView(this);
// tvWebViewTitle.setCompoundDrawables(ContextCompat.getDrawable(this, R.drawable.ic_arrow_back_black_24dp), null, null, null);
tvWebViewTitle.setGravity(Gravity.CENTER);
pbAd = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
wb = new WebView(this);
linearLayout.addView(tvWebViewTitle, LinearLayout.LayoutParams.MATCH_PARENT, 120);
linearLayout.addView(pbAd, LinearLayout.LayoutParams.MATCH_PARENT, 3);
linearLayout.addView(wb, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
setContentView(linearLayout);
// setContentView(R.layout.activity_agreement);
// String title = getIntent().getStringExtra("title");
String url = getIntent().getStringExtra("url");
// tvWebViewTitle = findViewById(R.id.tvWebViewTitle);
// pbAd = findViewById(R.id.pb_ad);
// tvWebViewTitle.setText(title);
// wb = findViewById(R.id.wb);
//设置可缩放
wb.getSettings().setSupportZoom(true);
wb.getSettings().setBuiltInZoomControls(true);
//设置WebView自适应屏幕
wb.getSettings().setUseWideViewPort(true);
wb.getSettings().setLoadWithOverviewMode(true);
//加载网页
wb.loadUrl(url);
wb.setWebViewClient(new MyWebViewClient());
wb.setWebChromeClient(new MyWebChromeClient());
//隐藏缩放按钮
wb.getSettings().setDisplayZoomControls(false);
WebSettings settings = wb.getSettings();
settings.setDomStorageEnabled(true);
settings.setDefaultTextEncodingName("UTF-8");
// 是否可访问Content Provider的资源,默认值 true
settings.setAllowContentAccess(true);
// 是否可访问本地文件,默认值 true
settings.setAllowFileAccess(true);
// 是否允许通过file url加载的Javascript读取本地文件,默认值 false
settings.setAllowFileAccessFromFileURLs(false);
// 是否允许通过file url加载的Javascript读取全部资源(包括文件,http,https),默认值 false
settings.setAllowUniversalAccessFromFileURLs(true);
settings.setJavaScriptEnabled(true);
//设置http和https混合加载
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
wb.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
wb.addJavascriptInterface(this, "GfanSdk");
tvWebViewTitle.setOnClickListener(this);