Android: как использовать категорию Sub_menu в опциях меню

В разделе "Моя деятельность" я размещаю меню параметров, например " Параметры текста", когда пользователь щелкает параметр текста, и в другом меню параметров (Sub_menu) требуется загрузить текст с настройкой цвета и размера текста. Как мы можем это сделать в Android?

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 выглядеть как ниже:

Вы можете добавить подменю к элементу в любом меню (кроме подменю), добавив элемент в качестве дочернего элемента. Подменю полезны, когда в вашем приложении имеется множество функций, которые могут быть организованы по темам, таким как элементы в строке меню приложения ПК (Файл, Редактировать, Просмотреть и т. Д.). Например:

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

Другие вопросы по тегам