如何在android应用程序中使用web视图显示印地语(非英语)网页

如何在android应用程序中使用web视图显示印地语(非英语)网页,android,android-layout,android-widget,android-webview,android-websettings,Android,Android Layout,Android Widget,Android Webview,Android Websettings,我正在开发一个android应用程序,我需要加载一个URL,其中包含web视图中的印地语字体 我为此使用了以下代码: WebView webView = (WebView) findViewById(R.id.webView); WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setBuiltInZoomControls(true); settings.set

我正在开发一个android应用程序,我需要加载一个URL,其中包含web视图中的印地语字体

我为此使用了以下代码:

WebView webView = (WebView) findViewById(R.id.webView);

WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setBuiltInZoomControls(true);
settings.setSupportZoom(true);
settings.setDefaultTextEncodingName("utf-8");

webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.loadUrl(url);
此代码在大多数最新设备中运行良好,并正确显示印地语内容。 但在Android 2.2、2.3或其他更低版本中,它显示的是方框而不是印地语字符。

如何支持为非英语测试启用web视图,以便我的应用程序可以在所有设备上运行。

提前感谢…

请尝试以下链接:

3.您只需调用上述函数一次(您必须为此找到一些逻辑)

4.使用以下代码为您的webview设置值。这里我使用CSS来设置字体

private String getHtmlData(Context context, String data){
    String head = "<head><style>@font-face {font-family: 'verdana';src: url('file://"+ context.getFilesDir().getAbsolutePath()+ "/verdana.ttf');}body {font-family: 'verdana';}</style></head>";
    String htmlData= "<html>"+head+"<body>"+data+"</body></html>" ;
    return htmlData;
 }
私有字符串getHtmlData(上下文,字符串数据){
字符串头=“@font-face{font-family:'verdana';src:url('file://“+context.getFilesDir().getAbsolutePath()+”/verdana.ttf');}正文{font-family:'verdana';}”;
字符串htmlData=“”+头+“”+数据+“”;
返回htmlData;
}
5.您可以按如下方式调用上述函数


loadDataWithBaseURL(null,getHtmlData(活动,htmlData),“text/html”,“utf-8”,“about:blank”)

我也为此挣扎了一天,但最终找到了解决办法

只需添加这两行代码就可以了

 WebSettings webSettings = webView.getSettings();
 webSettings.setDefaultTextEncodingName("utf-8");

请您将其提交给@Yogesh,谢谢您的回复。我已经提到这一点。但我不清楚,如何用下载的印地语字体替换系统/字体?这种方法在所有设备上都有效吗?请详细回复我。您应该使用adb或其他工具覆盖/system/fonts/DroidSansFallback.ttf。请确保首先备份文件。请参阅链接如果您无法使用adb推送文件,我们必须根设备?如果是,那么我不想使用根设备。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,则仅链接的答案可能无效。
private String getHtmlData(Context context, String data){
    String head = "<head><style>@font-face {font-family: 'verdana';src: url('file://"+ context.getFilesDir().getAbsolutePath()+ "/verdana.ttf');}body {font-family: 'verdana';}</style></head>";
    String htmlData= "<html>"+head+"<body>"+data+"</body></html>" ;
    return htmlData;
 }
 WebSettings webSettings = webView.getSettings();
 webSettings.setDefaultTextEncodingName("utf-8");