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