Я хочу изменить шрифт по умолчанию для веб-просмотра на собственный шрифт. Я использую webview при разработке двуязычного браузерного приложения для Android.
Я попытался получить экземпляр пользовательского шрифта, поместив свой собственный шрифт в активы. Но все еще не мог установить шрифт по умолчанию для моего шрифта.
Вот что я пробовал:
Typeface font = Typeface.createFromAsset(getAssets(), "myfont.ttf");
private WebView webview;
WebSettings webSettings = webView.getSettings();
webSettings.setFixedFontFamily(font);
Может ли кто-нибудь исправить это или предложить какой-либо другой метод изменения шрифта по умолчанию для веб-просмотра на собственный шрифт?
Спасибо!
android
webview
font-face
custom-font
Дханика
источник
источник
Ответы:
В этом проекте есть рабочий пример этого . Это сводится к:
assets/fonts
папку желаемый шрифт OTF или TTF (здесь MyFont.otf)Создайте HTML-файл, который вы будете использовать для содержимого WebView, внутри
assets
папки (здесь внутриassets/demo/my_page.html
):Загрузите HTML-код в WebView из кода:
Обратите внимание, что вставка HTML-кода
loadData()
не разрешена. Согласно документации :Как предлагает @JaakL в комментарии ниже, для загрузки HTML из строки вы должны вместо этого предоставить базовый URL, указывающий на ваши активы:
При ссылке на шрифт в
htmlData
, вы можете просто использовать/fonts/MyFont.otf
(опуская базовый URL).источник
res/font
папке. Какой тогда будет путь? Я пробовал,file:///android_res/font/
но, похоже, не работает.Я использую этот код :
источник
font-family: 'myface';
Еще проще, вы можете использовать формат URL-адреса ресурса для ссылки на шрифт. Никакого программирования не требуется!
...
источник
.ttf
и.html
файл в том же каталоге и загрузить его в Android браузер, он работает. Однако в моем приложении WebView, пока отображается CSS, текст отображается шрифтом Android по умолчанию, несмотря на добавление в папку.ttf
проектаassets/fonts
. Я тестирую 2.3.5, но строю против 2.1. Может быть, это проблема или что-то мне не хватает?view.loadUrl()
работает, аview.loadData()
не работает. Я понятия не имею, почему последний не делает.Это можно сделать в Android. На решение этой проблемы у меня ушло три дня. Но теперь это кажется очень простым. Выполните следующие действия, чтобы установить собственный шрифт для Webview.
1. Добавьте шрифт в папку с
ресурсами 2. Скопируйте шрифт в папку с файлами приложения.
3. Вы должны вызвать вышеуказанную функцию только один раз (для этого нужно найти логику).
4. С помощью приведенного ниже кода установите значение для вашего веб-просмотра. Здесь я использую CSS для установки шрифта.
5. Вы можете вызвать вышеуказанную функцию, как показано ниже.
источник
Я сделал это верхними ответами с этими дополнениями:
а затем используйте
src: url("file:///android_asset/fonts/YourFont...
всем спасибо :)
источник
Многие из приведенных выше ответов выглядят очаровательно, если у вас есть контент в папке с ресурсами.
Однако, если вы, как я, хотите загрузить и сохранить все ваши активы с сервера во внутреннее хранилище, вы можете вместо этого
loadDataWithBaseURL
использовать ссылку на свое внутреннее хранилище в качестве baseUrl. Тогда все файлы будут относиться к загруженному html и будут правильно найдены и использованы.В моем внутреннем хранилище я сохранил следующие файлы:
Затем я использую следующий код:
Файл CSS, используемый в приведенном выше html (style.css):
Я пробовал это только при таргетинге на minSdkVersion 19 (4.4), поэтому понятия не имею, работает ли он в других версиях
источник
источник
Вам не нужно использовать локальный ttf-файл для установки шрифта webview для Android, это увеличит размер всего приложения.
вы также можете использовать онлайн-шрифты, такие как шрифт Google ... Это поможет уменьшить размер вашего apk.
Например: перейдите по следующему URL- адресу https://gist.github.com/karimnaaji/b6c9c9e819204113e9cabf290d580551#file-googlefonts-txt.
Вы найдете необходимую информацию для использования этого шрифта. затем создайте строку, как показано ниже
затем загрузите веб-просмотр следующим образом
сделано. Таким образом вы сможете загрузить шрифт из внешнего источника.
Теперь что касается шрифта приложения, нет смысла использовать один шрифт для веб-просмотра и другой шрифт для всего приложения. Таким образом, вы можете использовать загружаемые шрифты в своем приложении, которое также использует внешние источники для загрузки шрифтов в приложение.
источник
Вы можете сделать это с помощью CSS. Я сделал это с помощью приложения, но оно не будет работать в Android 2.1, так как в браузере Android 2.1 есть известная ошибка.
источник
Проблема в том, что он должен быть в папке, попробуйте вместо этого поместить «./myfont.ttf», если не поместите шрифт в папку в ресурсах, таких как «fonts / myfont.ttf», которые точно будут работать.
источник
протестируйте, работайте для меня как шарм:
источник
Если вы помещаете шрифты под
res/font
такие же, как я, то вы можете изменить каталог на следующее: -источник
Используйте библиотеку https://github.com/delight-im/Android-AdvancedWebView .
в данных html:
в xml:
в java:
источник
Вот как вы загружаете htmlData в веб-просмотр:
где
getHtmlData(activity,**htmlData**)
возвращает строку html-кода.источник