Police personnalisée pour les webview
Je suis en train d'établir une nouvelle police personnalisée (otf fichier) pour ma vue web.
J'ai mis anbaaarabic_bold.otf dans le fichier d'actifs.
Il est de savoir comment je le fais:
String head = "<head><style>@font-face {font-family: 'verdana';src: url('file://"+ getActivity().getFilesDir().getAbsolutePath()+ "/anbaaarabic_bold.otf');}body {font-family: 'verdana';}</style></head>";
String htmlData= "<html>"+head+"<body style=\"font-family: verdana\">"+body+"</body></html>" ;
mBodyArticle.loadDataWithBaseURL("http://nada", htmlData,
"text/html", "utf-8", "");
corps : contenir mon code html.
Je ne sais pas pourquoi la police ne fonctionne pas pour mon webview. le corps html de police ne change pas.
- J'ai une question pour vous???êtes-vous en essayant de ne charger une page en particulier ou vous souhaitez que toutes les pages pour être dans la police personnalisée format?
Vous devez vous connecter pour publier un commentaire.
Il y a un rapport de bug pour Android qui semble suggérer que les polices personnalisées ne fonctionne pas pour certaines langues (le Thaï, l'hébreu, le Persan et l'arabe ont été mentionnés). Cela n'a pas été confirmé par personne à partir de Google, mais il y a un certain nombre de personnes qui déclarent le même problème.
L'une des solutions proposées (dont au moins un utilisateur confirmé de travail) était de convertir la police de la fto à svg. Il y a un certain nombre d'outils en ligne qui va le faire pour vous (Tout De Polices est un exemple), mais vous pouvez avoir des problèmes avec cet être protégées par un droit de police - assurez-vous que votre police d'une licence de telles conversions.
Aussi, lorsque vous avez converti la police, de l'ouvrir dans un éditeur de texte et vérifiez si l'élément svg est préfixée. Il devrait ressembler à quelque chose comme ceci:
Si c'est juste
<svg>
sans l'espace de noms, vous pouvez avoir besoin d'ajouter l'attribut xmlns manuellement. Apparemment, svg polices sans l'espace de noms ne fonctionne pas non plus.Pour obtenir de l'URI pour un fichier placé dans
/assets
dossier, vous devrez utiliser:Essayez le code suivant:
Assurez-vous que vous utilisez le nom exact du fichier (sensible à la casse).
anbaaarabic_bold.otf
lien de fichier? J'ai testé ce code avec succès avant de poster la réponse.String body = "<p>لوحة المفاتيح العربية</p>
avec le code ci-dessus et le résultat a été comme prévu. Voici une capture d'écran: ge.tt/2Io16uo/v/0?cVotre téléphone est équipé d'Android 2.1, par hasard?
Il y a un bug connu en 2.1. En conséquence, les polices personnalisées ne fonctionne pas pour la version 2.1. Mais cela devrait aussi fonctionner pour la 1.5, 1.6 et 2.2.
Vous pouvez trouver plus d'informations ici.
Ceci est un Exemple de la façon de créer une police de caractères pour webview à l'aide de html. Dans cette vue de définir la police de caractères dans la Chaîne HTML et de les charger avec webview. Mettre la police dans les biens dossier.
Chaque appareil android avoir de police par défaut .En utilisant une police de caractères requis pour donner à votre application regarder et se sentir bien.CLIQUEZ ICI pour en savoir plus sur la police
Étape :1 créez un nouveau projet d'application Android et copier le code dans le fichier xml
activity_main.xml: ]
Étape :2
créer un MainActivity.java dans le dossier src et copier le code
pour plus de détails, consultez ce lien : http://velmuruganandroidcoding.blogspot.in/2014/08/set-typeface-for-webview-in-android.html
Essayez ce lien
Je suppose que
getActivity().getFilesDir().getAbsolutePath()
ne pas vous mettre dans des actifs dossier où votre police réside, de sorte que le changement de police est tout simplement ignoré, comme il ne l'est pasQuand j'ai été en utilisant des polices personnalisées, j'ai utilisé le chemin d'accès
this.getAssets() + "your_font_name.otf"
Le code que j'ai utilisé: