赞
踩
我想将webview的默认字体更改为自定义字体.我正在使用webview开发Android的双语浏览器应用程序.
我尝试通过将自定义字体放在资源中来获取自定义字体的实例.但仍然无法将webview的默认字体设置为我的字体.
这是我试过的:
Typeface font = Typeface.createFromAsset(getAssets(), "myfont.ttf"); private WebView webview; WebSettings webSettings = webView.getSettings(); webSettings.setFixedFontFamily(font);
任何人都可以更正此或建议任何其他方法将webview的默认字体更改为自定义字体?
谢谢!
这个项目有一个很好的例子.归结为:
在您的assets/fonts
文件夹中,放置所需的OTF或TTF字体(此处为MyFont.otf)
在assets
文件夹内(此处为内部assets/demo/my_page.html
)创建一个HTML文件,用于WebView的内容:
Your text can go here! Your text can go here! Your text can go here!
从代码中将HTML加载到WebView中:
webview.loadUrl("file:///android_asset/demo/my_page.html");
请注意,loadData()
不允许注入HTML .根据文件:
请注意,JavaScript的相同原始策略意味着在使用此方法加载的页面中运行的脚本将无法访问使用"数据"以外的任何方案加载的内容,包括"http(s)".要避免此限制,请将loadDataWithBaseURL()与适当的基本URL一起使用.
正如@JaakL在下面的评论中建议的,要从字符串加载HTML,您应该提供指向您的资产的基本URL:
webView.loadDataWithBaseURL("file:///android_asset/", htmlData);
在引用字体时htmlData
,您可以简单地使用/fonts/MyFont.otf
(省略基本URL).
我正在使用此代码:
wv = (WebView) findViewById(R.id.webView1); String pish = ""; String pas = ""; String myHtmlString = pish + YourTxext + pas; wv.loadDataWithBaseURL(null,myHtmlString, "text/html", "UTF-8", null);
更简单的是,您可以使用资产URL格式来引用字体.无需编程!
@font-face { font-family: 'myface'; src: url('file:///android_asset/fonts/myfont.ttf'); } body { font-family: 'myface', serif;
...
它可以在Android中完成.我花了三天时间来解决这个问题.但现在看起来很容易.请按照以下步骤为Webview设置自定义字体
1.将您的字体添加到资源文件夹2.
将字体复制到应用程序的文件目录
private boolean copyFile(Context context,String fileName) { boolean status = false; try { FileOutputStream out = context.openFileOutput(fileName, Context.MODE_PRIVATE); InputStream in = context.getAssets().open(fileName); // Transfer bytes from the input file to the output file byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } // Close the streams out.close(); in.close(); status = true; } catch (Exception e) { System.out.println("Exception in copyFile:: "+e.getMessage()); status = false; } System.out.println("copyFile Status:: "+status); return status; }
你只需要调用一次上面的函数(你必须找到一些逻辑).
copyFile(getContext(), "myfont.ttf");
4.使用以下代码为webview设置值.这里我使用CSS来设置字体.
private String getHtmlData(Context context, String data){ String head = ""; String htmlData= ""+head+""+data+"" ; return htmlData; }
你可以按以下方式调用上述功能
webview.loadDataWithBaseURL(null, getHtmlData(activity,htmlData) , "text/html", "utf-8", "about:blank");
我用上面的答案做了这个添加:
webView.loadDataWithBaseURL("file:///android_asset/", WebClient.getStyledFont(someText), "text/html; charset=UTF-8", null, "about:blank");
然后使用 src: url("file:///android_asset/fonts/YourFont...
public static String getStyledFont(String html) { boolean addBodyStart = !html.toLowerCase().contains(""); boolean addBodyEnd = !html.toLowerCase().contains("@font-face {font-family: CustomFont;" + "src: url(\"file:///android_asset/fonts/Brandon_reg.otf\")}" + "body {font-family: CustomFont;font-size: medium;text-align: justify;}" + (addBodyStart ? "" : "") + html + (addBodyEnd ? "" : ""); }
谢谢大家:)
如果您的资产文件夹中有内容,则上述许多答案的工作都非常有魅力。
但是,如果像我这样想要将所有资产从服务器下载并保存到内部存储中,则可以使用loadDataWithBaseURL
内部存储的引用并将其用作baseUrl。然后,所有文件都将相对于已加载的html,并且可以正确找到和使用。
在我的内部存储器中,我保存了以下文件:
IndigoAntiqua2Text-Regular.ttf
style.css
image.png
然后,我使用以下代码:
WebView web = (WebView)findViewById(R.id.webby); //For avoiding a weird error message web.setLayerType(View.LAYER_TYPE_SOFTWARE, null); String webContent = "" + "I am a text rendered with INDIGO声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】推荐阅读
如何解决《AdMob尝试以127.0.0.1进行连接,但失败。始终触发onFailedToReceiveAd(发生网络错误。)》经验,为你挑选了1个好方法。android,admob,webview,php,html,apache,DevB... [详细]赞
踩
如何解决《在HTML5文档中加载视频时,WebView的自定义NSURLProtocol类不起作用》经验,为你挑选了1个好方法。macos,cocoa,webkit,objective-c,webview,html,javascript,c... [详细]赞
踩
如何解决《loadHTMLStringbaseURL:nil在iOS5中不起作用》经验,为你挑选了1个好方法。xcode,uiwebview,ios5,webview,html,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,... [详细]赞
踩
如何解决《在WebView中播放youtube视频》经验,为你挑选了3个好方法。android,android-widget,webview,html,xml,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json... [详细]赞
踩
如何解决《iPhoneUIWebview-保存已下载的图像》经验,为你挑选了1个好方法。iphone,uiwebview,webview,safari,html,javascript,lua,DevBox,在线流程图,编程,编程问答,程序员... [详细]赞
踩
如何解决《是否存在类似于file:///android_asset/的路径指向apps目录?》经验,为你挑选了1个好方法。android,absolute-path,webview,html,DevBox,在线流程图,编程,编程问答,程序员... [详细]赞
踩
如何解决《从UITableView传递URL时,UIWebView不加载URL》经验,为你挑选了1个好方法。iphone,objective-c,uiwebview,uitableview,webview,go,DevBox,在线流程图,编... [详细]赞
踩
如何解决《如何从android的webview中获取javascript的返回值?》经验,为你挑选了6个好方法。android,return,javascript,iphone,webview,chrome,lua,安全,json,http... [详细]赞
踩
如何解决《QtWebkit-自动完成输入》经验,为你挑选了1个好方法。qt,webkit,webview,go,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,... [详细]赞
踩
如何解决《在Razorwebhelper中使用html帮助器》经验,为你挑选了1个好方法。asp.net-mvc,razor,html,mvc,webview,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json... [详细]赞
踩
如何解决《阅读UIWebViewTEXT内容》经验,为你挑选了1个好方法。iphone,text,uiwebview,webview,html,lua,javascript,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发... [详细]赞
踩
如何解决《UIWebView不会滚动到结尾/底部》经验,为你挑选了3个好方法。iphone,scroll,uiwebview,webview,编辑器,xcode,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,jso... [详细]赞
踩
如何解决《旋转时更改应用程序后面的颜色》经验,为你挑选了1个好方法。screen-rotation,ios,safari,webview,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,un... [详细]赞
踩
如何解决《如何在表格单元格中使用UIWebView?》经验,为你挑选了2个好方法。iphone,cocoa-touch,uiwebview,uitableview,html,webview,twitter,css,xml,ipad,java... [详细]赞
踩
如何解决《WebView包装内容》经验,为你挑选了3个好方法。android,webview,算法,go,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开... [详细]赞
踩
如何解决《如何在Webkit窗口中操作页面内容(使用QT和QTWebKit)?》经验,为你挑选了1个好方法。macros,qt,webkit,html,webview,go,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发... [详细]赞
踩
如何解决《iPhoneUIWebView:loadData不适用于某些类型(Excel,MSWord,PPT,RTF)》经验,为你挑选了1个好方法。iphone,webkit,uiwebview,安全,webview,html,服务器,ip... [详细]赞
踩
如何解决《来自UIImage的数据URL/PNG》经验,为你挑选了1个好方法。cocoa-touch,iphone,webview,javascript,lua,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,jso... [详细]赞
踩
如何解决《当过度滚动时,如何在顶部UIWebView上删除灰色阴影?》经验,为你挑选了2个好方法。iphone,objective-c,uiwebview,webview,html,容器,DevBox,在线流程图,编程,编程问答,程序员,开... [详细]赞
踩
如何解决《Android:禁用webview中的文本选择》经验,为你挑选了4个好方法。android,webview,javascript,webkit,css,chrome,https,DevBox,在线流程图,编程,编程问答,程序员,开... [详细]赞
踩
相关标签
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。