【问题标题】:Android - difference between res/menu and res/layout?Android - res/menu 和 res/layout 之间的区别?
【发布时间】:2025-11-21 22:45:01
【问题描述】:

我对 android 开发相当陌生,您可能可以从我的问题中看出这一点。我发现我有一个 res/menu 文件夹和一个 res/layout 文件夹。它们都包含每个活动的 XML 文件。但我从未有意识地使用 res/menu 文件夹!我在 res/layout 中完成所有样式。那么我在 res/menu 的 xml 文件中做什么呢?

【问题讨论】:

    标签: android directory


    【解决方案1】:

    它旨在与 menuInflater 一起使用,以在您的活动的 onCreateOptionsMenu 方法中创建菜单。

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    

    对于本例,main.xml 可能如下所示:

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item
            android:id="@+id/menu_item_1"
            android:title="@string/menu_title2">
        </item>
        <item
            android:id="@+id/menu_item_2"
            android:title="@string/menu_title2">
        </item>
    </menu>
    

    当点击其中一个菜单项时要采取的动作可以通过重写 onOptionsItemSelected 方法来实现,可能是这样的:

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId())
        {
        case (R.id.menu_item_1):
            this.startActivity(new Intent(this, MyFirstActivity.class));
            return true;
        case (R.id.menu_item_2):
            this.startActivity(new Intent(this, MySecondActivity.class));
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }
    

    【讨论】:

      【解决方案2】:

      菜单文件夹,与其名称一样明确,用于存储xml 文件,这些文件用于使用 xml 管理菜单,而不是以编程方式进行。

      A simple and good tuto for that

      【讨论】:

        【解决方案3】:

        Android 中的菜单是按下菜单底部时在屏幕底部拉起的内容。此菜单是在 onCreateOptionsMenu 类的活动类中创建的:

        @Override
        public boolean onCreateOptionsMenu(Menu menu)
        {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
        

        如您所见,在这种情况下,R.menu.main 被“夸大”了。 R.menu.main 就是 res/menu 文件夹下名为 main.xml 的文件。示例菜单 xml 文件如下所示:

        <menu xmlns:android="http://schemas.android.com/apk/res/android" >
        
            <item
                android:id="@+id/menu_item_1"
                android:title="Menu Item">
            </item>
         </menu>
        

        此 xml 文件生成一个带有一个可单击选项的菜单:菜单项

        一个 android 布局文件用于创建活动的布局。在示例 onCreate 方法中:

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
        

        setContentView() 请求布局文件的 id。 R.layout.main 是一个位于 res/layout 中的文件,名为 main.xml。此代码将此活动的布局设置为 main.xml 中指定的任何内容。

        几乎所有 Android IDE,包括 Eclipse,都默认创建布局和菜单文件夹。

        【讨论】:

          最近更新 更多