Android:如何在菜单选项中使用Sub_menu类别

时间:2015-10-24 11:13:24

标签: android menu optionmenu

在我的活动中,当用户单击文本选项时,我会放置一个选项菜单,如文本选项,另一个选项菜单(Sub_menu)想要加载文本颜色和文本大小调整我们怎么办?这在Android Plz中帮助我成为Android的新手

1 个答案:

答案 0 :(得分:1)

menu_activity.xml拥有您想要的所有menu item。如果您不想最初显示menu item,请将其可见性设置为false。 android:visible="false"

<item
    android:id="@+id/text_options"
    android:orderInCategory="2"
    android:title="@string/text_options"
    app:showAsAction="ifRoom"/>
<item
    android:id="@+id/text_color"
    android:orderInCategory="3"
    android:title="@string/text_color"
    android:visible="false"
    app:showAsAction="ifRoom"/>       
<item
    android:id="@+id/text_size"
    android:orderInCategory="4"
    android:title="@string/text_size"
    android:visible="false"
    app:showAsAction="ifRoom"/>      

Activity中有以下方法:

private boolean isShown = true;

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

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    menu.findItem(R.id.text_options).setVisible(!isShown);
    menu.findItem(R.id.text_color).setVisible(isShown);
    menu.findItem(R.id.text_size).setVisible(isShown);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.text_options:
            hideMenu();
    }
    return super.onOptionsItemSelected(item);
}

public void hideMenu() {
    isShown = false;
    invalidateOptionsMenu();
}

public void showMenu() {
    isShown = true;
    invalidateOptionsMenu();
}

调用invalidateOptionsMenu()后,将重新计算菜单列表,即将调用onPrepareOptionsMenu()。稍微修改一下,你就可以实现你想要的目标。

<强>更新

如果您想添加子菜单,请将menu_activity.xml修改为如下所示:

  

您可以在任何菜单(子菜单除外)中添加子菜单   添加一个元素作为一个孩子。子菜单很有用   当你的应用程序有很多可以组织的功能时   进入主题,例如PC应用程序菜单栏中的项目(文件,编辑,   查看等)。例如:

 <?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/file"
          android:title="@string/file" >
        <!-- "file" submenu -->
        <menu>
            <item android:id="@+id/create_new"
                  android:title="@string/create_new" />
            <item android:id="@+id/open"
                  android:title="@string/open" />
        </menu>
    </item>
</menu> To use the menu in your activity, you need to inflate the menu resource (convert the XML resource into a programmable object)
     

使用MenuInflater.inflate()。在以下部分中,您将看到   如何为每种菜单类型充气菜单。

此处有更多信息:http://developer.android.com/guide/topics/ui/menus.html