我正在尝试将 Font Awesome Arrows 设置为“上一个”和“下一个”而不是我的页面标题。我该如何做到这一点?我知道如何手动添加单词,现在如何将其更改为我的 strings.xml 中定义的引用箭头?
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;
}
对于 future 的读者,这是根据提供的答案起作用的:
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;
}
最佳答案
为了将任何自定义样式直接应用于文本序列(而不是在 View 上设置它),您可以将字符串包装在 Span
中。遗憾的是,该框架没有接受 Typeface
对象的内置 span 对象(TypefaceSpan
接受字体系列)。
但是,有许多示例(例如 this one )可用于创建将应用您的自定义字体的简单子(monad)类。
应用它看起来像这样:
@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;
}
关于java - Viewpager 中的 Font Awesome 上一个 下一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28687205/