我试图使用字体很棒的图标并遇到一些问题。它从MainActivity开始工作,但是当我从Fragment使用时它没有显示图标。
这是我的HomeFragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View home = inflater.inflate(R.layout.fragment_home, container, false);
View feed_row = inflater.inflate(R.layout.feed_row, container, false);
like_button = (Button) feed_row.findViewById(R.id.like_button);
Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), "fonts/fontawesome-webfont.ttf");
like_button.setTypeface(tf);
mHomeFeed = (RecyclerView) home.findViewById(R.id.home_feed);
mLayoutManager = new LinearLayoutManager(this.getActivity());
mHomeFeed.setHasFixedSize(true);
mHomeFeed.setLayoutManager(mLayoutManager);
这是feed_row.xml:
<Button
android:id="@+id/like_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/icon_heart"
android:background="@color/noBackground"/>
的strings.xml
<string name="icon_heart"></string>
<string name="icon_comment"></string>
我现在该怎么办?它没有错误,但图标如下所示:
答案 0 :(得分:0)
改为使用:
Typeface tf = Typeface.createFromAsset(getActivity().getAssets(),
"fonts/fontawesome-webfont.ttf");
由于不断为每个图标创建新字体(如answer评论中所述),因此存在内存问题,您可以使用Calligraphy。使用库配置应用程序后,只需添加fontPath
属性:
所以你有一个更灵活的代码,其中字体只在XML中:
<Button
android:id="@+id/like_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/icon_heart"
android:background="@color/noBackground"
fontPath="fonts/fontawesome-webfont.ttf"/>
答案 1 :(得分:0)
您可以通过创建一个类并从Button
类扩展它来完成此操作
public class AwesomeFontButton extends Button {
public AvenirBookEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public AvenirBookEditText(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public AvenirBookEditText(Context context) {
super(context);
init();
}
private void init() {
if (!isInEditMode()) {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(),
"fontawesome-webfont.ttf"); //add your font path here
setTypeface(tf);
}
}
}
并在xml中使用它:
<YourFilePath.AwesomeFontButton
android:id="@+id/like_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/icon_heart"
android:background="@color/noBackground"/>
在xml中随处使用