Intereting Posts
Запустить анимацию при загрузке страницы, остановить загрузку страницы Почему getApplicationContext () в конструкторе Activity выдает исключение из null-указателя? «Adb» не распознается как внутренняя или внешняя команда, операционная программа или командный файл Android NDK: получение обратной линии Android AsynTask с диалогом прогресса отменит Как создать текстовый файл и вставить данные в этот файл на Android Как установить минимальный и максимальный размер для ImageView в Android Утилита Android Maps: изображения с URL-адреса Какой метод активности вызывается после всех методов компоновки? Запись на консоль вывода пользовательского интерфейса UI Учебник для начинающих для Arduino Mega ADK Android EditText / TextView, как заставить каждое слово начинаться с верхнего регистра, а все остальные символы слов – строчными буквами Как получить формат длинной долготы E6 для Google Maps на Android Доступ к экземпляру родительской активности? Android ndk UnsatisfiedLinkError при использовании готовой общей библиотеки

Как использовать значки и символы из «Font Awesome» в приложении для Android

Я пытаюсь использовать Font Awesome в своем приложении, мне удалось интегрировать шрифт с помощью Typeface.createFromAsset() , но я также хочу использовать значки, предоставленные этим шрифтом, но до сих пор мне не удалось это сделать что.

Этот конкретный шрифт содержит значки внутри частной области использования Юникода (PUA) для таких вещей, как элементы управления медиаплеером, доступ к файловой системе, стрелки и т. Д.

Кто-нибудь использовал шрифты, содержащие значки и символы на Android, это вообще возможно?

Solutions Collecting From Web of "Как использовать значки и символы из «Font Awesome» в приложении для Android"

Font Awesome, похоже, отлично работает для меня в приложении для Android. Я сделал следующее:

  1. Скопировано fontawesome-webfont.ttf в папку моих состязаний
  2. Найденные объекты символов для значков, которые я хотел, используя эту страницу: http://fortawesome.github.io/Font-Awesome/cheatsheet/
  3. Создал запись в файле strings.xml для каждого значка. Например, для сердца:

     <string name="icon_heart">&#xf004;</string> 
  4. Ссылка на указанную запись в представлении моего макета xml:

      <Button android:id="@+id/like" style="?android:attr/buttonStyleSmall" ... android:text="@string/icon_heart" /> 
  5. Загрузите шрифт в мой метод onCreate и установите его для соответствующих представлений:

     Typeface font = Typeface.createFromAsset( getAssets(), "fontawesome-webfont.ttf" ); ... Button button = (Button)findViewById( R.id.like ); button.setTypeface(font); 

Попробуйте IcoMoon: http://icomoon.io

  • Выберите нужные значки
  • Назначение символов для каждого значка
  • Скачать шрифт

Скажем, вы выбрали значок игры, присвоили ему букву «P» и загрузили файл icomoon.ttf в свою папку с icomoon.ttf . Вот как вы показываете значок:

XML:

 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="48sp" android:text="P" /> 

Ява:

 Typeface typeface = Typeface.createFromAsset(getAssets(), "icomoon.ttf"); textView.setTypeface(typeface); 

Я рассказал о создании прекрасных приложений для Android, в том числе объяснение использования шрифтов значков, а также добавление градиентов, чтобы сделать иконки еще красивее: http://www.sqisland.com/talks/beautiful-android

Объяснение шрифта значка начинается со слайда 34: http://www.sqisland.com/talks/beautiful-android/#34

Возможно, слишком поздно, но у меня была такая же потребность, поэтому я опубликовал этот https://github.com/liltof/font-awsome-for-android. Это версия шрифта для Android, предназначенная для Android, такая же потрясающая, как и Кейт Корвин.

Надеюсь, это поможет другим.

Для этой цели создана небольшая и полезная библиотека :

 dependencies { compile 'com.shamanland:fonticon:0.1.9' } 

Получите демоверсию в Google Play .

Введите описание изображения здесь

Вы можете легко добавить значок на основе шрифта в своем макете:

 <com.shamanland.fonticon.FontIconView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ic_android" android:textSize="@dimen/icon_size" android:textColor="@color/icon_color" /> 

Вы можете раздувать значок шрифта как Drawable из xml:

 <?xml version="1.0" encoding="utf-8"?> <font-icon xmlns:android="http://schemas.android.com/apk/res-auto" android:text="@string/ic_android" android:textSize="@dimen/big_icon_size" android:textColor="@color/green_170" /> 

Код Java:

 Drawable icon = FontIconDrawable.inflate(getResources(), R.xml.ic_android); 

Ссылки:

  • Страница проекта
  • Github repo

Проверьте это repo для реализации шрифта, удивительного в android

https://github.com/bperin/FontAwesomeAndroid

Одна из библиотек, которые я использую для Font Awesome, такова:

https://github.com/Bearded-Hen/Android-Bootstrap

В частности,

https://github.com/Bearded-Hen/Android-Bootstrap/wiki/Font-Awesome-Text

Документацию легко понять.

Во-первых, добавьте необходимые зависимости в build.gradle:

 dependencies { compile 'com.beardedhen:androidbootstrap:1.2.3' } 

Во-вторых, вы можете добавить это в свой XML:

 <com.beardedhen.androidbootstrap.FontAwesomeText android:layout_width="wrap_content" android:layout_height="wrap_content" fontawesometext:fa_icon="fa-github" android:layout_margin="10dp" android:textSize="32sp" /> 

Но убедитесь, что вы добавили это в свой корневой макет, если хотите использовать пример выше кода:

  xmlns:fontawesometext="http://schemas.android.com/apk/res-auto" 

Библиотека FontView позволяет использовать символы шрифта обычного / уникода в качестве значков / графических элементов в приложении. Он может загружать шрифт через активы или сетевое местоположение.

Преимущество этой библиотеки заключается в следующем:

 1 - it takes care of remote resources for you 2 - scales the font size in dynamically sized views 3 - allows the font to easily be styled. 

https://github.com/shellum/fontView

Пример:

Layout:

 <com.finalhack.fontview.FontView android:id="@+id/someActionIcon" android:layout_width="80dp" android:layout_height="80dp" /> 

Java:

 fontView.setupFont("fonts/font.ttf", character, FontView.ImageType.CIRCLE); fontView.addForegroundColor(Color.RED); fontView.addBackgroundColor(Color.WHITE); 

Как и выше, это отличный пример и отлично работает:

 Typeface font = Typeface.createFromAsset(getAssets(), "fontawesome-webfont.ttf" ); Button button = (Button)findViewById( R.id.like ); button.setTypeface(font); 

НО! > Это будет работать, если строка внутри кнопки вы установили из xml:

 <string name="icon_heart">&#xf004;</string> button.setText(getString(R.string.icon_heart)); 

Если вам нужно добавить его динамически, можете использовать это:

 String iconHeart = "&#xf004;"; String valHexStr = iconHeart.replace("&#x", "").replace(";", ""); long valLong = Long.parseLong(valHexStr,16); button.setText(getString((char)valLong+""); 

Я сделал этот вспомогательный класс в C # (Xamarin), чтобы программно установить свойство text. Это хорошо работает для меня:

 internal static class FontAwesomeManager { private static readonly Typeface AwesomeFont = Typeface.CreateFromAsset(App.Application.Context.Assets, "FontAwesome.ttf"); private static readonly Dictionary<FontAwesomeIcon, string> IconMap = new Dictionary<FontAwesomeIcon, string> { {FontAwesomeIcon.Bars, "\uf0c9"}, {FontAwesomeIcon.Calendar, "\uf073"}, {FontAwesomeIcon.Child, "\uf1ae"}, {FontAwesomeIcon.Cog, "\uf013"}, {FontAwesomeIcon.Eye, "\uf06e"}, {FontAwesomeIcon.Filter, "\uf0b0"}, {FontAwesomeIcon.Link, "\uf0c1"}, {FontAwesomeIcon.ListOrderedList, "\uf0cb"}, {FontAwesomeIcon.PencilSquareOutline, "\uf044"}, {FontAwesomeIcon.Picture, "\uf03e"}, {FontAwesomeIcon.PlayCircleOutline, "\uf01d"}, {FontAwesomeIcon.SignOut, "\uf08b"}, {FontAwesomeIcon.Sliders, "\uf1de"} }; public static void Awesomify(this TextView view, FontAwesomeIcon icon) { var iconString = IconMap[icon]; view.Text = iconString; view.SetTypeface(AwesomeFont, TypefaceStyle.Normal); } } enum FontAwesomeIcon { Bars, Calendar, Child, Cog, Eye, Filter, Link, ListOrderedList, PencilSquareOutline, Picture, PlayCircleOutline, SignOut, Sliders } 

Я думаю, должно быть достаточно легко конвертировать в Java. Надеюсь, это поможет кому-то!

Есть еще одно приятное решение, которое вы можете использовать в ваших XML-файлах макета напрямую и не требует использования setTypeface .

Это Исифика Джоан Запта . Вы можете прочитать здесь, что нового в Iconify v2 . Он включает 9 различных библиотек шрифтов, которые можно просто использовать, добавив зависимости в файл build.gradle .

В XML-файлах макета можно выбирать между этими виджетами:

 com.joanzapata.iconify.widget.IconTextview com.joanzapata.iconify.widget.IconButton com.joanzapata.iconify.widget.IconToggleButton 

Я немного опаздываю на вечеринку, но я написал собственное представление, которое позволит вам сделать это, по умолчанию оно настроено на entypo, но вы можете изменить его, чтобы использовать любой значок: проверьте его здесь: github.com/MarsVard/IconView

// редактирование библиотеки устарело и больше не поддерживается … новый https://github.com/MarsVard/IonIconView

Если вам нужны только несколько значков шрифтов, вы также можете использовать http://fa2png.io для генерации нормальных пикселей. Но если вы регулярно добавляете новые иконки / кнопки, я бы рекомендовал версию .ttf как более гибкую.

Проверьте это для своего решения, простой пример шрифта, удивительный шрифт в примере для Android

См .: http://www.nkdroid.com/2014/11/fontawesome-in-android-example.html

Если кто-то задается вопросом, как добавить его в программу, вы должны сделать это таким образом.

  button_info.setText(R.string.icon_heart); button_info.append(" Hallo"); //<<--- This is the tricky part 

Если вы хотите программный setText без добавления строки в string.xml

См. Здесь шестнадцатеричный код:

http://fortawesome.github.io/Font-Awesome/cheatsheet/

Замените & # xf066; До 0xf066

  Typeface typeface = Typeface.createFromAsset(getAssets(), "fontawesome-webfont.ttf"); textView.setTypeface(typeface); textView.setText(new String(new char[]{0xf006 })); 

Попробуйте это, вы получите руководство для префекта

http://androidinterviewfanda.blogspot.in/2016/07/image-as-textview-font-in-android.html?view=flipcard

Поскольку все ответы велики, но я не хотел использовать библиотеку, и каждое решение с помощью всего одного кода Java-кода делало мои Activities и Fragments очень грязными. Поэтому я написал класс TextView следующим образом:

 public class FontAwesomeTextView extends TextView { private static final String TAG = "TextViewFontAwesome"; public FontAwesomeTextView(Context context) { super(context); init(); } public FontAwesomeTextView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public FontAwesomeTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public FontAwesomeTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(); } private void setCustomFont(Context ctx, AttributeSet attrs) { TypedArray a = ctx.obtainStyledAttributes(attrs, R.styleable.TextViewPlus); String customFont = a.getString(R.styleable.TextViewPlus_customFont); setCustomFont(ctx, customFont); a.recycle(); } private void init() { if (!isInEditMode()) { Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fontawesome-webfont.ttf"); setTypeface(tf); } } public boolean setCustomFont(Context ctx, String asset) { Typeface typeface = null; try { typeface = Typeface.createFromAsset(ctx.getAssets(), asset); } catch (Exception e) { Log.e(TAG, "Unable to load typeface: "+e.getMessage()); return false; } setTypeface(typeface); return true; } } 

Что вам нужно сделать, это скопировать файл шрифта ttf в папку с данными. И используйте этот лист для поиска каждой строки значков.

надеюсь это поможет.