2015-02-24 47 views
2

我试图将Font Awesome箭头设置为'上一个'和'下一个',而不是我的页面标题。我该如何做到这一点?我知道如何手动添加单词,现在如何将其更改为在我的strings.xml中定义的引用箭头?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中。不幸的是,该框架没有内置的跨度对象,它接受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 2015-02-24 04:09:39

+0

嗨,这种方法没有任何回报。 – Petro 2015-02-25 03:52:08

+0

您是否可以对什么不起作用更具描述性?如果你看不到任何文本,你是否尝试使用不同的跨度(比如'ScaleXSpan',或者简单的东西)以确保它不是不正确的跨度定义? – Devunwired 2015-02-25 04:27:38