2015-02-24 3 views
2

Я пытаюсь установить шрифт Awesome Arrows как «предыдущий» и «следующий» вместо моих названий страниц. Как это сделать? Я знаю, как вручную добавлять слова, теперь Как я могу изменить это на указанные стрелки, определенные в моем файле strings.xml?Шрифт Awesome в Viewpager Предыдущий Следующий

 Typeface font = Typeface.createFromAsset(getAssets(), "fonts/fontawesome-webfont.ttf"); 
     @Override 
     public String getPageTitle(int position) { 

       if (position == current_position - 1) { 
        String title = "Previous"; 
        return title; 
       } else if (position == current_position + 1) { 
        String title = "Next"; 
        return title; 
       } 
      return title; 
     } 

Для будущих читателей, это то, что работает на основе ответа при условии:

final Typeface font = Typeface.createFromAsset(getAssets(), "fonts/fontawesome-webfont.ttf"); 
      @Override 
      public CharSequence getPageTitle(int position) { 
      String title = ""; 
       if (position == current_position - 1) { 
       title = "\uf137"; 
       SpannableStringBuilder styled = new SpannableStringBuilder(title); 
       styled.setSpan(new CustomTypefaceSpan("", font), 0, title.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE); 
       //Previous 
       return styled; 

      } else if (position == current_position + 1) { 
       //Next 
       title = "\uf138"; 
       SpannableStringBuilder styled = new SpannableStringBuilder(title); 
       styled.setSpan(new CustomTypefaceSpan("",font), 0, title.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE); 
       return styled; 
      } 

ответ

1

Для того, чтобы применить любые пользовательские стили непосредственно в текстовых последовательности (а не устанавливать его в поле зрения), вы можете обернуть строку в Span. К сожалению, у рамки нет встроенного объекта span, который принимает объект Typeface (TypefaceSpan вместо этого принимает семейство шрифтов).

Однако существует множество примеров (например, this one) для создания простого подкласса, который будет применять вашу пользовательскую поверхность.

Применяя это будет выглядеть примерно так:

@Override 
public CharSequence getPageTitle(int position) { 
    Typeface font = Typeface.createFromAsset(getAssets(), "fontawesome-webfont.ttf"); 
    String title = ""; 

    if (position == current_position - 1) { 
     title = "\uf137"; 
    } else if (position == current_position + 1) { 
     title = "\uf138"; 
    } 

    SpannableString styled = new SpannableString(title); 
    styled.setSpan(new CustomTypefaceSpan(font), 0, title.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE); 

    return styled; 
} 
+0

Спасибо! Я проверю это, когда вернусь домой – Petro

+0

Привет, этот подход ничего не вернул. – Petro

+0

Можете ли вы быть немного более наглядным о том, что не сработало? Если вы не видите текст, попробовали ли вы использовать другой диапазон (например, «ScaleXSpan» или что-то простое), чтобы убедиться, что это неверное определение диапазона? – Devunwired