当前位置: 首页 > 知识库问答 >
问题:

Android如何使用自定义字体在webView中远程html?

张玺
2023-03-14

当我将资产/字体中的自定义字体应用于本地html时。我只是像下面这样设置字体@font-face{font-Family:'my'字体;src: url('file:///android_asset/fonts/my'字体);}但是,当我使用loadUrl(“远程html url”)时,上面的代码不起作用。有一个好主意吗?

下面的链接显示本地字体和本地html的示例代码。如何在Android中更改Webview的字体外观?

但是我需要远程html和本地字体示例。

共有1个答案

濮丁雷
2023-03-14

您好,先生,您可以使用jsoup处理您的Web视图

首先,您需要实现jsoupimplementation'org。jsoup:jsoup:1.11.1’

然后你需要像这样获取你的站点。连接(“http://youramazing.site“).get();

之后,可以使用append方法将自定义样式添加到文档中

        doc.head().append(" <style>\n" +
                "            @font-face {\n" +
                "            font-family: 'Roboto Slab Bold';\n" +
                "            src: url('file:///android_asset/fonts/syne.ttf')\n" +
                "            }\n" +
                "            body { font-family: 'Roboto Slab Bold', serif; font-size: 17px; color: #000; }\n" +
                "            a { color: #000; }\n" +
                " </style>");

之后,您可以使用webviewString s=doc.html()webView.loadData(s,"text/html","utf-8");

带有AsyncTask的完整代码:

public class MainActivity extends AppCompatActivity {
    WebView webView;
    Document doc;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView = findViewById(R.id.wewewew);
        AsyncTask<Void,Void,String> asyncTask = new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(Void... voids) {
                try {
                    doc = Jsoup.connect("http://youramazing.site/").get();
                } catch (IOException e) {
                    e.printStackTrace();
                }


                doc.head().append(" <style>\n" +
                        "            @font-face {\n" +
                        "            font-family: 'Roboto Slab Bold';\n" +
                        "            src: url('file:///android_asset/fonts/syne.ttf')\n" +
                        "            }\n" +
                        "            body { font-family: 'Roboto Slab Bold', serif; font-size: 17px; color: #000; }\n" +
                        "            a { color: #000; }\n" +
                        " </style>");
                return doc.html();
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                webView.setWebViewClient(new WebViewClient());
                webView.loadData(s,"text/html","utf-8");
            }
        };
        asyncTask.execute();



    }
}
 类似资料:
  • 我想更改加载到WebView中的html字符串的字体,类似于本问题中提到的: 如何在Android中更改Webview的字体? 不同之处在于,我并没有使用旧的方法将字体文件存储在assets文件夹中,而是将它们存储在res/font中,如“Fonts in XML”android字体支持文档中所述: https://developer.android.com/guide/topics/ui/loo

  • 我在整个React本机应用程序中使用自定义字体。我使用react-native-link命令链接了它们。除了Android的Webview组件之外,它们在任何地方都可以工作。它在iOS Webview中正常工作。 我已经尝试使用url("file:///android_assets/fonts/Lohit-Gujarati")在webview css中创建一个字体面。它不起作用。导入谷歌字体css

  • 我创建了一个TextView库项目,其中我使用了自定义字体。我必须创建这个库,因为这个也将在其他三个项目中使用。我发现android库项目不支持资产/字体文件夹。如果我以这种方式使用,它会给我错误消息 这里是否有解决此问题的方法。另外,我必须在三个不同的应用程序中使用重复视图。还有我用来从library assets文件夹中获取字体的示例代码。

  • 是否可以在我的Android应用程序中包含TTF字体(Arial),以便外部加载网页的CSS使用? 比如说我的网站http://www.some-site.com它有一个CSS文件,包含以下内容: 我还尝试将字体的url src设置为以下值,但它们都不起作用: 我知道如果Arial是这样的话,这是可行的。ttf文件与服务器上的CSS文件位于同一目录中,但我想做的是能够使用Arial。ttf,位于我

  • 我正在使用IText7从html字符串生成pdf。现在,我需要对段落应用自定义颜色和自定义字体或字体系列。 如何使用Itext7实现这一点? 谢谢

  • 问题内容: 我正在尝试在使用wkhtmltopdf生成的PDF中使用自定义字体。我读到您不能使用google webfonts,而wkhtmltopdf使用truetype .ttf文件。谁能确认?因此,我从Google webfont下载了一个.ttf文件,并将其放入服务器中,然后使用了字体: 和字体系列: 现在应该以Jolly Lodger字体呈现的文本根本没有出现,页面为空白。 我究竟做错了