Android菜单(Menu) - 3

来源:互联网 发布:韩国虚拟手机号软件 编辑:程序博客网 时间:2024/06/05 07:55

 

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

运行效果: