デフォルトのシャーロック ライト テーマを使用している場合、この方法でフォント フェイスを変更できます (TextView にキャストできます)。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.main, menu);
getLayoutInflater().setFactory(new LayoutInflater.Factory() {
public View onCreateView(String name, Context context,
AttributeSet attrs) {
if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")
|| name.equalsIgnoreCase("TextView")) {
try {
LayoutInflater li = LayoutInflater.from(context);
final View view = li.createView(name, null, attrs);
new Handler().post(new Runnable() {
public void run() {
// here I can change the font!
((TextView)view).setTypeface(MY_CUSTOM_TYPE_FACE);
}
});
return view;
} catch (InflateException e) {
// Handle any inflation exception here
} catch (ClassNotFoundException e) {
// Handle any ClassNotFoundException here
}
}
return null;
}
});
return true;
}
しかし、このツールでカスタム テーマを使用すると、上記の解決策は機能しません。このように、各項目は ActionMenuItemView のインスタンスであり、フォント フェイスを適用する方法がわかりません。