Android菜单(Menu) - 三

Android菜单(Menu) - 3

 

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,如下图:

Android菜单(Menu) - 三

点击“Next”

Android菜单(Menu) - 三

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
    }
    
}

运行效果:

Android菜单(Menu) - 三