4.4.5 添加图标
图标也可添加到菜单项,使用SetIcon()方法即可完成。例如:
menu.add(0, MENU_FILE_1, 0, "File");
变更为:
menu.add(0, MENU_FILE_1, 0, "File").setIcon(R.drawable.chip);
其中黄色部分为新建的代码。
在一般情况下,我们应该建立单独的图标,所有的广义的屏幕密度,包括低(low-),中(medium-),高(high-)和额外的高密度(extra-high-density)显示屏。这确保了我们的图标将正确地显示在整个范围内的设备上,以及应用程序可以安装上。
(详见 http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html)
在我们的应用程序代码中实例化一个菜单,而是我们应该定义一个菜单,所有项目在一个XML的菜单资源,然后在我们的应用程序代码填充的菜单资源(读取为一个可编程的对象)。使用菜单资源来定义我们的菜单是一个很好的做法,因为它从我们的应用程序代码中的菜单内容分开。可视化的结构和内容的XML的菜单中,它也更容易。
(详见 http://developer.android.com/guide/topics/ui/menus.html)
新建一Android XML,如下图:
点击“Next”
my_menu.xml清单如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/file"
android:icon="@drawable/chip"
android:title="@string/file" />
<item android:id="@+id/exit"
android:title="@string/exit"/>
</menu>
所使用的字符串资源在strings.xml
<resources>
<string name="app_name">testMenu</string>
<string name="hello_world">Hello world!</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_main">MainActivity</string>
<string name="file">File</string>
<string name="exit">Exit</string>
</resources>
其程序代码如下:(标记红色字体部分为更改的代码)
package com.example.testmenu;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class MainActivity extends Activity {
private static final int MENU_FILE_1 = Menu.FIRST;
private static final int MENU_EXIT_2 = Menu.FIRST + 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//getMenuInflater().inflate(R.menu.activity_main, menu);
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.my_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case MENU_FILE_1:
fileMenu();
break;
case MENU_EXIT_2:
break;
default:
break;
}
return false;
}
private void fileMenu() {
// TODO My-generated method stub
}
private void exitMenu() {
// TODO My-generated method stub
}
}
运行效果:
