速读原著-Android应用开发入门教程(菜单的使用)

6.5 菜单的使用

菜单是屏幕中比较独立的一个元素,它和普通的控件略有不同,很多 GUI 系统都对菜单有单独的接口和运作方式。在 Android 中具有单独接口,用于在活动中使用菜单。

本例使用一个菜单来控制按钮的背景颜色,从其中可以了解如何在应用程序中使用菜单。
在这里插入图片描述
建立菜单和调用的代码片段如下所示:

public class TestMenu extends Activity {
    private static final String TAG = "TestMenu";
    private Button mButton;
    public static final int RED_MENU_ID = Menu.FIRST;
    public static final int GREEN_MENU_ID = Menu.FIRST + 1;
    public static final int BLUE_MENU_ID = Menu.FIRST + 2;
    public TestMenu() { }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.testmenu);
        mButton = (Button) findViewById(R.id.color_button);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        menu.add(0, RED_MENU_ID, 0, R.string.red);
        menu.add(0, GREEN_MENU_ID, 0, R.string.green);
        menu.add(0, BLUE_MENU_ID, 0, R.string.blue);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case RED_MENU_ID:
                mButton.setBackgroundColor(Color.RED);
                mButton.setText(R.string.red);
                return true;
            case GREEN_MENU_ID:
                mButton.setBackgroundColor(Color.GREEN);
                mButton.setText(R.string.green);
                return true;
            case BLUE_MENU_ID:
                mButton.setBackgroundColor(Color.BLUE);
                mButton.setText(R.string.blue);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

使用菜单主要通过重载 Activity 中的两个函数来实现:

public boolean onCreateOptionsMenu(Menu menu) 
public boolean onOptionsItemSelected(MenuItem item)

onCreateOptionsMenu()用于在建立菜单时进行设置,建立时为每一个按钮设置 ID,菜单项被选择时调用onOptionsItemSelected(),通过 MenuItem 类的 getItemId()函数获得这个菜单的 ID,继续进行处理。

菜单类在 Android 中表示为 android.view.Menu 类。使用这个类可以进行一些更为细节的设置和操作。

abstract MenuItem add(int groupId, int itemId, int order, CharSequence title) 
abstract MenuItem add(int groupId, int itemId, int order, int titleRes)

add()的第 1、2 个参数是整数值,分别代表按钮项的组 ID 和选项 ID,第 3 个参数用于设置按钮上的文件。

相关推荐
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页