Comment changer la police de Webview Android?
Je veux changer la police par défaut de webview pour une police personnalisée. Je suis l'aide de webview dans le développement d'un bilinguisme navigateur app pour Android.
J'ai essayé d'obtenir une instance de la coutume de police en plaçant mes polices personnalisées dans les actifs. Mais ne pouvait toujours pas réglé webview la police par défaut de ma police.
C'est ce que j'ai essayé:
Typeface font = Typeface.createFromAsset(getAssets(), "myfont.ttf");
private WebView webview;
WebSettings webSettings = webView.getSettings();
webSettings.setFixedFontFamily(font);
Quelqu'un peut-il corriger ce ou suggérer une autre méthode pour changer webview la police par défaut à une police personnalisée?
Merci!
- Enfin j'ai réalisé que cela ne peut pas être fait.
- check this out. stackoverflow.com/questions/1344080/...
- salut u ne trouver aucune solution face à la police, je suis en train de hindi de la police stackoverflow.com/q/5868198/501859. m'aider si u ont la solution
- comment faire pour résoudre ce problème face à un même problème.
- Veuillez consulter ce lien pour personnaliser la police dans la webview texte ..stackoverflow.com/a/25692052/3921740[1] [1]: stackoverflow.com/a/25692052/3921740
Vous devez vous connecter pour publier un commentaire.
Il y a un exemple de cela dans ce projet. Il se résume à:
assets/fonts
dossier, à l'endroit souhaité de la FTO ou de la police TTF (ici MyFont.otf)Créer un fichier HTML que vous pourrez utiliser pour la WebView du contenu, à l'intérieur de la
assets
dossier (ici à l'intérieur deassets/demo/my_page.html
):Charge le HTML dans la WebView de code:
Prendre note que d'injecter de l'HTML par le biais de
loadData()
n'est pas autorisée. Selon les documents:Comme @JaakL suggère dans les commentaires ci-dessous, pour le chargement HTML à partir d'une chaîne, vous devez fournir l'URL de base de pointage à votre actif:
Lors de la référence à la police dans
htmlData
, vous pouvez simplement utiliser/fonts/MyFont.otf
(en omettant l'URL de base).Je suis en utilisant ce code :
font-family: 'myface';
Encore plus simple, vous pouvez utiliser l'Actif format d'URL de référence de la police. Aucune programmation n'est requise!
...
.ttf
et.html
fichier dans le même répertoire et de le charger dans le navigateur Android, il fonctionne. Cependant, dans mon application WebView, tandis que le CSS montre, le texte s'affiche dans Android par défaut de la police, malgré l'ajout de la.ttf
du projetassets/fonts
dossier. Je suis en essais sur 2.3.5, mais la construction de, contre 2,1. Peut-être le problème, ou est-il quelque chose que je suis absent?view.loadUrl()
œuvres, alors queview.loadData()
ne le fait pas. Je n'ai aucune idée de pourquoi ce dernier ne l'est pas.Il peut être fait dans Android. J'ai pris trois jours pour résoudre ce problème. Mais maintenant, il semble très facile.
Suivez ces étapes pour installer des polices personnalisées pour Webview
1.Ajouter à votre police d'actifs dossier
2.Copie de la police à la demande du répertoire des fichiers de
3.Vous devez appeler la fonction ci-dessus qu'une seule fois (vous devez trouver un peu de logique pour cette).
4.Utilisez le code ci-dessous à la valeur définie pour votre webview. Ici, je suis en utilisant le CSS pour définir la police.
5.Vous pouvez appeler la fonction ci-dessus comme ci-dessous
j'ai fait cela par le haut-réponses avec cette ajouts:
et ensuite utiliser
src: url("file:///android_asset/fonts/YourFont...
merci à tout le monde:)
De nombreuses réponses ci-dessus, de travail, se trouve un charme si vous avez votre contenu dans votre dossier des actifs.
Toutefois, si vous avez comme moi envie de télécharger et de sauvegarder toutes vos actifs à partir d'un serveur vers votre espace de stockage interne, vous pouvez à la place utiliser
loadDataWithBaseURL
et l'utilisation d'une référence à votre espace de stockage interne comme le baseUrl. Ensuite, tous les fichiers, il y aura par rapport à la chargé html et sont trouvés et utilisés correctement.Dans mon stockage interne, j'ai enregistré les fichiers suivants:
Puis-je utiliser le code suivant:
Le fichier CSS utilisé dans le html ci-dessus (style.css):
Je ne l'ai essayé ce tout en ciblant minSdkVersion 19 (4.4) donc je n'ai aucune idée si ça fonctionne sur les autres versions
Vous pouvez le faire en utilisant le CSS. Je l'ai fait avec une application mais il ne fonctionne pas sous Android 2.1 comme il y a un bug connu avec le navigateur Android 2.1.
Le problème est qu'il doit être dans un dossier, essayez de le mettre "./myfont.ttf" au lieu de cela, pour ne pas mettre la police à l'intérieur d'un dossier dans des actifs comme "fonts/myfont.ttf" qui va travailler pour vous.
C'est comment charger des htmlData dans une webview:
où
getHtmlData(activity,**htmlData**)
renvoie une chaîne de code html.