当我创建一个选项菜单中的项目似乎默认为本地的SANS字体。当我看到商业应用程序,他们似乎主要是为了做同样的事情。是否可以设置字体大小,颜色的重量或字样的选项菜单项?
When I create an Options Menu the items seem to default to the native "sans" font. When I look at commercial apps they mostly seem to do the same thing. Is it possible to set the font size, color weight or typeface for Option Menu items?
在此先感谢。
您可以自定义选项菜单,其中包括:
You can customize the option menu, including:
添加自定义字体
Add a custom font
改变字体大小
更改字体颜色
设置背景为绘制资源(如图像,边境,梯度)
Set background to a Drawable resource (e.g. image, border, gradient)
要更改背景边框或渐变,你必须创建在 RES
名为绘制
和资源文件夹,里面,创建边框XML或渐变XML。
To change background to a border or gradient you have to create a resource folder in res
called drawable
and, inside it, create the border XML or gradient XML.
这都是可以做的编程方式,如下所示:
This can all be done programatically as shown below:
public class CustomMenu extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public boolean onCreateOptionsMenu(android.view.Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.cool_menu, menu);
getLayoutInflater().setFactory(new Factory() {
public View onCreateView(String name, Context context,
AttributeSet attrs) {
if (name.equalsIgnoreCase(
"com.android.internal.view.menu.IconMenuItemView")) {
try {
LayoutInflater li = LayoutInflater.from(context);
final View view = li.createView(name, null, attrs);
new Handler().post(new Runnable() {
public void run() {
// set the background drawable if you want that
//or keep it default -- either an image, border
//gradient, drawable, etc.
view.setBackgroundResource(R.drawable.myimage);
((TextView) view).setTextSize(20);
// set the text color
Typeface face = Typeface.createFromAsset(
getAssets(),"OldeEnglish.ttf");
((TextView) view).setTypeface(face);
((TextView) view).setTextColor(Color.RED);
}
});
return view;
} catch (InflateException e) {
//Handle any inflation exception here
} catch (ClassNotFoundException e) {
//Handle any ClassNotFoundException here
}
}
return null;
}
});
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.AboutUs:
Intent i = new Intent("com.test.demo.ABOUT");
startActivity(i);
break;
case R.id.preferences:
Intent p = new Intent("com.test.demo.PREFS");
startActivity(p);
break;
case R.id.exit:
finish();
break;
}
return false;
}
}
不要忘了创建一个名为菜单
在 RES
文件夹中的文件夹,和菜单里面
文件夹中创建一个XML为您的菜单(如 cool_menu.xml )像这样的:
Dont forget to create folder called menu
in res
folder, and inside the menu
folder create an XML for your menu (e.g. cool_menu.xml) such as this:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="about"android:id="@+id/AboutUs" />
<item android:title="Prefs" android:id="@+id/preferences" />
<item android:title="Exit" android:id="@+id/exit" />
</menu>
那么输出将是这样的:
Then the output will be something like this: