Quiero cambiar la fuente predeterminada de la vista web a una fuente personalizada. Estoy usando webview para desarrollar una aplicación de navegador bilingüe para Android.
Intenté obtener una instancia de tipografía personalizada colocando mi fuente personalizada en assets. Pero todavía no pude establecer la fuente predeterminada de webview en mi fuente.
Esto es lo que probé:
Typeface font = Typeface.createFromAsset(getAssets(), "myfont.ttf");
private WebView webview;
WebSettings webSettings = webView.getSettings();
webSettings.setFixedFontFamily(font);
¿Alguien puede corregir esto o sugerir algún otro método para cambiar la fuente predeterminada de webview a una fuente personalizada?
¡Gracias!
android
webview
font-face
custom-font
Dhanika
fuente
fuente
Respuestas:
Hay un ejemplo práctico de esto en este proyecto . Se reduce a:
assets/fonts
carpeta, coloque la fuente OTF o TTF deseada (aquí MyFont.otf)Cree un archivo HTML que usará para el contenido de WebView, dentro de la
assets
carpeta (aquí dentroassets/demo/my_page.html
):Cargue el HTML en WebView desde el código:
Tenga en cuenta que
loadData()
no está permitido inyectar HTML . Según la documentación :Como sugiere @JaakL en el comentario a continuación, para cargar HTML desde una cadena, debe proporcionar la URL base que apunta a sus activos:
Cuando haga referencia a la fuente
htmlData
, simplemente puede usar/fonts/MyFont.otf
(omitiendo la URL base).fuente
res/font
carpeta. ¿Cuál sería entonces el camino? Lo intentéfile:///android_res/font/
pero no parece funcionar.Estoy usando este código :
fuente
font-family: 'myface';
Aún más simple, puede usar el formato de URL de activos para hacer referencia a la fuente. ¡No se necesita programación!
...
fuente
.ttf
y.html
en el mismo directorio y lo cargo en el navegador de Android, funciona. Sin embargo, en el WebView de mi aplicación, mientras se muestra el CSS, el texto aparece en la fuente predeterminada de Android a pesar de agregarlo.ttf
a laassets/fonts
carpeta del proyecto . Estoy probando en 2.3.5, pero construyendo contra 2.1. ¿Podría ser ese el problema o hay algo que me falta?view.loadUrl()
funciona, mientrasview.loadData()
que no. No tengo ni idea de por qué este último no lo hace.Se puede hacer en Android. Me tomó tres días resolver este problema. Pero ahora parece muy fácil. Siga estos pasos para configurar una fuente personalizada para Webview
1.Agregue su fuente a la carpeta de activos
2.Copie la fuente al directorio de archivos de la aplicación
3. Debe llamar a la función anterior solo una vez (debe encontrar algo de lógica para esto).
4.Utilice el siguiente código para establecer el valor de su vista web. Aquí estoy usando CSS para establecer la fuente.
5.Puede llamar a la función anterior como se muestra a continuación
fuente
Hice esto por respuestas superiores con estas adiciones:
y luego usa
src: url("file:///android_asset/fonts/YourFont...
Gracias a todos:)
fuente
Muchas de las respuestas anteriores funcionan de maravilla si tiene su contenido en su carpeta de activos.
Sin embargo, si me gusta, desea descargar y guardar todos sus activos desde un servidor a su almacenamiento interno, en su lugar, puede usar
loadDataWithBaseURL
y usar una referencia a su almacenamiento interno como baseUrl. Entonces, todos los archivos serán relativos al html cargado y se encontrarán y usarán correctamente.En mi almacenamiento interno he guardado los siguientes archivos:
Luego utilizo el siguiente código:
El archivo CSS utilizado en el html anterior (style.css):
Solo probé esto mientras apuntaba a minSdkVersion 19 (4.4), así que no tengo idea de si funciona en otras versiones
fuente
fuente
No necesita usar el archivo ttf local para configurar la fuente de vista web para Android, aumentará el tamaño completo de la aplicación.
también puede usar fuentes en línea como la fuente de Google ... Le ayudará a reducir el tamaño de su apk.
Por ejemplo: visite la siguiente URL https://gist.github.com/karimnaaji/b6c9c9e819204113e9cabf290d580551#file-googlefonts-txt
Encontrará la información necesaria para utilizar esta fuente. luego crea una cadena como la siguiente
luego cargue la vista web así
hecho. Podrá cargar la fuente desde la fuente externa de esta manera.
Ahora, ¿qué pasa con la fuente de la aplicación? No tiene sentido usar una fuente para la vista web y una fuente diferente para toda la aplicación. Por lo tanto, puede usar fuentes descargables en su aplicación, que también usa fuentes externas para cargar fuentes en la aplicación.
fuente
Puedes hacerlo usando CSS. Lo hice con una aplicación pero no funciona en Android 2.1 ya que hay un error conocido con el navegador de Android 2.1.
fuente
El problema es que debe estar en una carpeta, intente poner "./myfont.ttf" en su lugar, si no, coloque la fuente dentro de una carpeta en activos como "fonts / myfont.ttf" que funcionará con seguridad.
fuente
pruébalo, trabaja para mí como un encanto:
fuente
Si está colocando fuentes
res/font
como yo, puede cambiar el directorio a lo siguiente: -fuente
Utilice la biblioteca https://github.com/delight-im/Android-AdvancedWebView .
en datos html:
en xml:
en java:
fuente
Así es como se carga htmlData en una vista web:
donde
getHtmlData(activity,**htmlData**)
devuelve una cadena de código html.fuente