カスタムHTMLと事前定義されたベースURLを使用してアセットからWebViewにCSSファイルをロードします

ミヤーン・ハーリッド

実行時に作成したHTMLをWebViewにロードし、assetsディレクトリに配置されたCSSファイル適用する必要がありますそして、私はすでにwebviewの関数に提供する必要のあるベースURL持っていますloadDataWithBaseURL

コードスニペット(CSSファイルを適用しない):

StringBuffer buff = new StringBuffer();
buff.append("<head>");
buff.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"file:///android_asset/my_css_file.css\"/>");
buff.append("</head>");
buff.append("<div class=\"announcement-header\">");
buff.append("HEADER");
buff.append("</div>");
buff.append("<div class=\"announcement-separator\"></div>");
buff.append("<div class=\"announcement\">");
buff.append("CONTENT");
buff.append("</div>")
WebView.loadDataWithBaseURL(MY_BASE_URL, buff.toString(), "text/html", HTTP.UTF_8, null);

私はこれらの2つの同様の問題を見てきた1発行2号を、私は与えるカントとして私の場合はわずかに異なっているfile:///android_asset/にベースURLとしてloadDataWithBaseURL機能。

この場合、CSSファイルをどのように適用できるかについてのアイデアはありますか?

M-WaJeEh

あなたからの要求の一部をインターセプトしたい場合はWebView、あなたオーバーライドすることによって行うことができますshouldInterceptRequest()WebViewClient、このように:

 public WebResourceResponse shouldInterceptRequest (final WebView view, String url) {
        if (URLUtil.isFileUrl(url) && url.contains(".css")) {
            return getCssWebResourceResponseFromAsset();
        } else {
            return super.shouldInterceptRequest(view, url);
        }
    }

ここにはすでに優れた詳細な回答がありますhttps://stackoverflow.com/a/8274881/1112882

ただし、セキュリティ上の理由から、ベースURLがローカルでない場合、ローカルファイルにアクセスすることはできません。したがって、cssへの相対パスを指定してから、リクエストをインターセプトします。

パターンを使用して、白黒の実際の相対パスとカスタム相対パスを区別することをお勧めします。たとえば、のandroid_asset/my_css_file.css代わりにmy_css_file.css使用し、shouldInterceptRequest()それに応じて変更して、から始まるリクエストを常にインターセプトしますandroid_asset

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

事前定義されたリストとして使用されるサイトコアドロップリストからフィールド値を取得する方法

分類Dev

非アセットフォルダからカスタムCSSを使用してWebViewにHTMLをロードする

分類Dev

Pythonを使用してファイルをGoogleストレージにアップロードするための事前署名されたURLを生成します

分類Dev

事前定義されたフィルターを使用してページからファイルをダウンロードする

分類Dev

事前定義されたノードスタイルを設定しますか?

分類Dev

Cは、事前定義されたメッセージを使用してstdoutをファイルにリダイレクトします

分類Dev

SpringXDに事前定義されたストリームのセットをデプロイして起動時にタップする方法

分類Dev

アップロードされたファイルのデータ(バイナリ)を文字列に変換してから、JSPとサーブレットJavaを使用してMSSQLデータベースに挿入します。

分類Dev

Flaskとsqlalchemy:データベースに保存されているパスを使用してアップロードされたファイルを取得します

分類Dev

APIを使用して事前設定されたGoogleドライブアカウントにファイルをアップロードしますか?

分類Dev

事前定義された可視性、コントロール名、デフォルト値を使用してOrbeonカスタムコントロールXBLを作成するにはどうすればよいですか?

分類Dev

JPA / Hibernateを使用してデータベースビューまたはSpring Bootのプロシージャから派生/計算された列をフェッチし、事前定義された列と一緒に使用するにはどうすればよいですか?

分類Dev

2つのマーカー間のKMLファイルから事前定義されたルートにポリラインを描画しますか?

分類Dev

SpriteKitを使用したカスタムフレームワーク-アセットファイルがロードされていません

分類Dev

事前定義されたリストまたは拡張子のセットを持つすべてのファイルをループし、他のすべてのファイルタイプを無視するバッチ

分類Dev

Excelファイルの行nからn + xをPythonのデータフレームにロードします。ここで、nとxは事前定義されています

分類Dev

signalR を使用して、データベース内の事前定義されたグループに通知をプッシュします。

分類Dev

Google Cloud Runクイックスタート:ビルドとデプロイを完了するためにサービスアカウントに必要な事前定義されたIAMロールは何ですか?

分類Dev

Laravelでは、事前定義されたテキストを使用して緊急時間をデータベースに保存することができます。

分類Dev

Python:大きなテキストファイルを開きますが、事前定義された列値を含む行のみをロードします

分類Dev

Googleスプレッドシートのセルの範囲から値を取得し、それを事前定義された値と比較して、条件が満たされた場合にメールを送信する方法

分類Dev

最初にエンティティフレームワークコード-オブジェクトのタイプが事前定義されたリスト内にあるテーブルからオブジェクトを選択します

分類Dev

カスタムフィールドワードプレスからアップロードされたファイルの期間を取得します

分類Dev

ヘッダーファイルで事前定義されているフレンドメソッドをどのように使用しますか?

分類Dev

角度またはJavaScriptで事前に署名されたURLを使用してS3バケットにファイルをアップロードする方法

分類Dev

Laravelのベストプラクティス:事前定義されたフィールドを使用した検証

分類Dev

Rawクエリセットでは、大文字と小文字を区別しないようにILIKEを使用して、フィールドの1つが事前定義された文字で始まっているかどうかを確認します

分類Dev

サプライズで事前定義されたフォールドからデータをロードするときに完全なトレインセットを構築するにはどうすればよいですか?

分類Dev

事前定義されたグリッドクラスを使用して、ブレークポイントでdivを非表示にします

Related 関連記事

  1. 1

    事前定義されたリストとして使用されるサイトコアドロップリストからフィールド値を取得する方法

  2. 2

    非アセットフォルダからカスタムCSSを使用してWebViewにHTMLをロードする

  3. 3

    Pythonを使用してファイルをGoogleストレージにアップロードするための事前署名されたURLを生成します

  4. 4

    事前定義されたフィルターを使用してページからファイルをダウンロードする

  5. 5

    事前定義されたノードスタイルを設定しますか?

  6. 6

    Cは、事前定義されたメッセージを使用してstdoutをファイルにリダイレクトします

  7. 7

    SpringXDに事前定義されたストリームのセットをデプロイして起動時にタップする方法

  8. 8

    アップロードされたファイルのデータ(バイナリ)を文字列に変換してから、JSPとサーブレットJavaを使用してMSSQLデータベースに挿入します。

  9. 9

    Flaskとsqlalchemy:データベースに保存されているパスを使用してアップロードされたファイルを取得します

  10. 10

    APIを使用して事前設定されたGoogleドライブアカウントにファイルをアップロードしますか?

  11. 11

    事前定義された可視性、コントロール名、デフォルト値を使用してOrbeonカスタムコントロールXBLを作成するにはどうすればよいですか?

  12. 12

    JPA / Hibernateを使用してデータベースビューまたはSpring Bootのプロシージャから派生/計算された列をフェッチし、事前定義された列と一緒に使用するにはどうすればよいですか?

  13. 13

    2つのマーカー間のKMLファイルから事前定義されたルートにポリラインを描画しますか?

  14. 14

    SpriteKitを使用したカスタムフレームワーク-アセットファイルがロードされていません

  15. 15

    事前定義されたリストまたは拡張子のセットを持つすべてのファイルをループし、他のすべてのファイルタイプを無視するバッチ

  16. 16

    Excelファイルの行nからn + xをPythonのデータフレームにロードします。ここで、nとxは事前定義されています

  17. 17

    signalR を使用して、データベース内の事前定義されたグループに通知をプッシュします。

  18. 18

    Google Cloud Runクイックスタート:ビルドとデプロイを完了するためにサービスアカウントに必要な事前定義されたIAMロールは何ですか?

  19. 19

    Laravelでは、事前定義されたテキストを使用して緊急時間をデータベースに保存することができます。

  20. 20

    Python:大きなテキストファイルを開きますが、事前定義された列値を含む行のみをロードします

  21. 21

    Googleスプレッドシートのセルの範囲から値を取得し、それを事前定義された値と比較して、条件が満たされた場合にメールを送信する方法

  22. 22

    最初にエンティティフレームワークコード-オブジェクトのタイプが事前定義されたリスト内にあるテーブルからオブジェクトを選択します

  23. 23

    カスタムフィールドワードプレスからアップロードされたファイルの期間を取得します

  24. 24

    ヘッダーファイルで事前定義されているフレンドメソッドをどのように使用しますか?

  25. 25

    角度またはJavaScriptで事前に署名されたURLを使用してS3バケットにファイルをアップロードする方法

  26. 26

    Laravelのベストプラクティス:事前定義されたフィールドを使用した検証

  27. 27

    Rawクエリセットでは、大文字と小文字を区別しないようにILIKEを使用して、フィールドの1つが事前定義された文字で始まっているかどうかを確認します

  28. 28

    サプライズで事前定義されたフォールドからデータをロードするときに完全なトレインセットを構築するにはどうすればよいですか?

  29. 29

    事前定義されたグリッドクラスを使用して、ブレークポイントでdivを非表示にします

ホットタグ

アーカイブ