我一直在使用Jake Wharton's ViewPagerIndicator,我正在尝试在我的一个片段上实现自定义字体。我尝试过使用这段代码:
TextView txt = (TextView) findViewById(R.id.Zipcode);
Typeface font = Typeface.createFromAsset(getAssets(), "fonts/customfont.ttf");
txt.setTypeface(font);
在主要活动的onCreate
中导致logcat中出现空指针异常,偶尔会typeface cannot be made
。我还尝试在onCreate
和onCreateView
中设置片段本身的字体,但findViewById
和getAssests()
是片段范围内的未知方法。
我无法弄清楚字体是否存在问题,或者我试图设置字体是不是问题。
答案 0 :(得分:58)
你可以试试这个
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_layout, container, false);
TextView txt = (TextView) v.findViewById(R.id.Zipcode);
Typeface font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/customfont.ttf");
txt.setTypeface(font);
return v;
}
通过这种方式,您可以在片段范围内获得上下文并获取视图和资产
答案 1 :(得分:0)
在yourViewHolder类中定义字体
Typeface customFontBold= Typeface.createFromAsset(getActivity().getAssets(),"fonts/JosefinSans-Bold.ttf");
像这样。
答案 2 :(得分:-1)
我的简单代码是更改方法调用" context"在 带有" getContext()的片段; //片段中的getContext和getActvity是否相同?
**result**.setText("Value Expenses = " +expenses);
Typeface supercell = Typeface.createFromAsset(**getContext()**.getAssets(), "fonts/Supercell.ttf");**
**result.setTypeface(supercell);**
}catch (Exception e)
{
Toast.makeText(getActivity(), "SUCCEED, VALUES RESULT", Toast.LENGTH_SHORT)
.show();
}
break;