Поиск…


замечания

Значок Шрифты похожи на обычные типы шрифтов, которые имеют символы вместо букв. Он может быть использован в вашем приложении максимально легко.

Они есть:

  • гибкий
  • Масштабируемость
  • векторы
  • Быстрая обработка
  • Легкий вес
  • доступной

Влияние на размер

Экспортирование изображения в различных размерах для устройств Android будет стоить вашему приложению, размер дополнительных активов - около 30 КБ на изображение. При добавлении файла шрифта (.ttf) с примерно 36 значками будет стоить всего 9 КБ. Представьте себе случай, если вы добавите 36 отдельных файлов различных конфигураций, это будет около 1000 КБ. Это разумное пространство, которое вы сэкономите с помощью значков.

Ограничения иконок.

  • Значки шрифтов могут использоваться в навигационном ящике. Использование их в навигационных представлениях как значок пунктов меню невозможно, так как файл меню не может быть создан без указания заголовка. Поэтому рекомендуется использовать svg-файлы в качестве ресурсов для этих значков.

  • Символьные шрифты нельзя использовать в кнопке с плавающим действием. поскольку они не имеют атрибута setText() .

  • Внешние шрифты нельзя применять из xml. Они должны быть указаны с использованием java-файла. Или вам нужно расширить основной вид и создать представление, указанное в этом сообщении

Как интегрировать знаковые шрифты

Чтобы использовать значки, выполните следующие действия:

  • Добавить файл шрифта в ваш проект

    Вы можете создать файл значков шрифтов с интернет-сайтов, таких как icomoon , где вы можете загружать файлы SVG с необходимыми значками, а затем загружать созданный шрифт значка. Затем поместите файл шрифта .ttf в папку с именем fonts (укажите его как хотите) в папке с ресурсами:

    Место, где нужно поместить файл шрифта

  • Создание класса помощника

    Теперь создайте следующий вспомогательный класс, чтобы избежать повторения кода инициализации шрифта:

    public class FontManager {
      public static final String ROOT = "fonts/";
      FONT_AWESOME = ROOT + "myfont.ttf";
      public static Typeface getTypeface(Context context) {
        return Typeface.createFromAsset(context.getAssets(), FONT_AWESOME);
      }
    }
    

    Вы можете использовать класс Typeface для выбора шрифта из активов. Таким образом, вы можете установить шрифт на различные виды, например, на кнопку:

    Button button=(Button) findViewById(R.id.button);
    Typeface iconFont=FontManager.getTypeface(getApplicationContext());
    button.setTypeface(iconFont);
    

    Теперь шрифт кнопки был изменен на вновь созданный шрифт значка.

  • Подберите значки, которые вы хотите

    Откройте файл styles.css, прикрепленный к шрифту значка. Там вы найдете стили с символами Unicode ваших значков:

    .icon-arrow-circle-down:before {
      content: “\e001”;
    }
    .icon-arrow-circle-left:before {
      content: “\e002”;
    }
    .icon-arrow-circle-o-down:before {
      content: “\e003”;
    }
    .icon-arrow-circle-o-left:before {
      content: “\e004”;
    }
    

    Этот файл ресурсов будет служить в качестве словаря, который сопоставляет символ Юникода, связанный с определенным значком, с человекочитаемым именем. Теперь создайте строковые ресурсы следующим образом:

    <resources>
      <! — Icon Fonts -->
      <string name=”icon_arrow_circle_down”>&#xe001; </string>
      <string name=”icon_arrow_circle_left”>&#xe002; </string>
      <string name=”icon_arrow_circle-o_down”>&#xe003; </string>
      <string name=”icon_arrow_circle_o_left”>&#xe004; </string>
    </resources>
    
  • Используйте значки в коде.

    Теперь вы можете использовать свой шрифт в разных представлениях, например, следующим образом:

    button.setText(getString(R.string.icon_arrow_circle_left))
    

    Вы также можете создавать текстовые представления кнопок с помощью значков:

    Примеры кнопок с иконками на них

TabLayout с иконками шрифтов

public class TabAdapter extends FragmentPagerAdapter {

CustomTypefaceSpan fonte;
List<Fragment> fragments = new ArrayList<>(4);
private String[] icons = {"\ue001","\uE002","\uE003","\uE004"};

public TabAdapter(FragmentManager fm, CustomTypefaceSpan fonte) {
    super(fm);
    this.fonte = fonte
    for (int i = 0; i < 4; i++){
        fragments.add(MyFragment.newInstance());
    }
}

public List<Fragment> getFragments() {
    return fragments;
}

@Override
public Fragment getItem(int position) {
    return fragments.get(position);
}

@Override
public CharSequence getPageTitle(int position) {
    SpannableStringBuilder ss = new SpannableStringBuilder(icons[position]);
    ss.setSpan(fonte,0,ss.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
    ss.setSpan(new RelativeSizeSpan(1.5f),0,ss.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE );
    return ss;
}



@Override
public int getCount() {
    return 4;
}

}
//..
TabLayout tabs;
ViewPager tabs_pager;
public CustomTypefaceSpan fonte;
//..

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //...
    fm = getSupportFragmentManager();
    fonte = new CustomTypefaceSpan("icomoon",Typeface.createFromAsset(getAssets(),"myfont.ttf"));
    this.tabs = ((TabLayout) hasViews.findViewById(R.id.tabs));
    this.tabs_pager = ((ViewPager) hasViews.findViewById(R.id.tabs_pager));
    //...
}

@Override
protected void onStart() {
    super.onStart();
    //..
    tabs_pager.setAdapter(new TabAdapter(fm,fonte));
    tabs.setupWithViewPager(tabs_pager);
    //..


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow