21

我一直在使用Jake Wharton 的 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然而onCreateViewfindViewById并且getAssests()是片段范围内的未知方法。

我无法确定字体是问题还是我试图设置字体的位置不是问题。

4

3 回答 3

61

你可以试试这个

@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;
}

有了这个,您可以在片段范围内获得上下文并获取视图和资产

于 2012-08-21T21:08:54.687 回答
0

在 yourViewHolder 类中定义字体`

Typeface customFontBold= Typeface.createFromAsset(getActivity().getAssets(),"fonts/JosefinSans-Bold.ttf");

像这样。

于 2017-01-09T21:18:55.563 回答
-1

我的简单代码是在片段中使用“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;
于 2016-04-27T21:38:57.060 回答