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 } }
运行效果: