문제:
웹사이트의 모양을 수정해야 합니다. WebView에 표시됩니다(예: www.google.com의 배경색을 빨간색으로 변경). 자산 폴더의 style.css 파일을 www.google.com에 삽입하려는 시도가 실패했습니다.
다음에 표시된 웹사이트에 CSS를 직접 삽입하는 것은 불가능합니다. 웹뷰. 대신 JavaScript를 사용하여 페이지의 DOM(문서 개체 모델)을 조작할 수 있습니다.
다음은 CSS 삽입을 위해 수정된 코드입니다.
<code class="java">public class MainActivity extends ActionBarActivity { WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); webView = new WebView(this); setContentView(webView); // Enable Javascript webView.getSettings().setJavaScriptEnabled(true); // Add a WebViewClient webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { // Inject CSS when page is done loading injectCSS(); super.onPageFinished(view, url); } }); // Load a webpage webView.loadUrl("https://www.google.com"); } // Inject CSS method: read style.css from assets folder // Append stylesheet to document head private void injectCSS() { try { InputStream inputStream = getAssets().open("style.css"); byte[] buffer = new byte[inputStream.available()]; inputStream.read(buffer); inputStream.close(); String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP); webView.loadUrl("javascript:(function() {" + "var parent = document.getElementsByTagName('head').item(0);" + "var style = document.createElement('style');" + "style.type = 'text/css';" + // Tell the browser to BASE64-decode the string into your script !!! "style.innerHTML = window.atob('" + encoded + "');" + "parent.appendChild(style)" + "})()"); } catch (Exception e) { e.printStackTrace(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }</code>
설명:
이 접근 방식은 JavaScript를 사용합니다. WebView에 표시된 웹사이트의 DOM을 수정하여 CSS 스타일을 페이지에 효과적으로 삽입할 수 있습니다.
위 내용은 WebView에 표시된 웹사이트의 모양을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!