21

私はJakeWhartonのViewPagerIndicatorを使用しており、現在、フラグメントの1つにカスタムフォントを実装しようとしています。私はこのコードを使ってみました:

   TextView txt = (TextView) findViewById(R.id.Zipcode);
    Typeface font = Typeface.createFromAsset(getAssets(), "fonts/customfont.ttf");
    txt.setTypeface(font); 

onCreatelogcatでnullポインタ例外が発生するメインアクティビティの場合、場合によってはtypeface cannot be madeonCreateまた、との両方でフラグメント自体にフォントを設定しようとしましたonCreateViewが、フラグメントスコープfindViewByIdgetAssests()は不明なメソッドです。

フォントが問題なのか、フォントを設定しようとしている場所が問題なのかがわかりません。

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

私の単純なコードは、フラグメント内のメソッド呼び出し「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;
于 2016-04-27T21:38:57.060 に答える