2015-02-22 6 views
1

Я заменил панель действий панелью инструментов. Мой minSDK-17 и TargetSDK-21. Итак, вот в чем проблема. У меня есть 2 действия и 4 элемента действия.Как скрыть элементы действия на панели инструментов

  • Б
  • С
  • D

Все детали действия 4 поддерживаются в toolbar_actions.xml

В настоящее время все элементы действий 4 отображаются в обоих деятельность. Тем не менее, я хотел бы отображать только элементы действия A, B в 1-м действии

Я бы хотел отображать только элементы действия C, D во втором действии. Как это можно достичь? Я считаю, что не имеет смысла иметь другой файл toolbar_actions.xml для каждого действия.

Или следует использовать панель контекстного действия (CAB)? Я считаю, что имеет смысл использовать CAB только тогда, когда элементы действия используются для определенной цели (например, выделить, скопировать, выбрать в случае приложения для чтения PDF-файлов) или использовать редко.

Другая проблема заключается в том, что я хотел бы добавить раскрывающийся список прядильщика внутри панели инструментов. Может блесны в панели инструментов можно использовать для переключения между различными видами деятельности или панель инструментов вертушка ограничивается только

ответ

2
  1. фрагментов Вы можете использовать onCreateOptionsMenu метод в каждой деятельности, чтобы скрыть элементы действия, которые вы хотите. Для 1-го действия вы хотите отображать только элементы A и B. Таким образом, вы скрываете C и D:

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    
        // Inflate the menu; this adds items to the action bar if it is present. 
        getMenuInflater().inflate(R.menu.toolbar_actions, menu); 
    
        // Hide action items, you don't want to display 
        menu.findItem(R.id.C).setVisible(false); 
        menu.findItem(R.id.D).setVisible(false); 
    
        return true; 
    } 
    
  2. Вы можете использовать панель инструментов с блесны для переключения деятельности, но вы должны добавить его ко всем видам деятельности (повторно использовать), которые вы хотите, чтобы переключаться между ними.

0

Небольшое усовершенствование к решению Деяна для того, чтобы избежать NullPointerExceptions и вернуть фактический результат инфляции:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    boolean result = getMenuInflater().inflate(R.menu.toolbar_actions, menu); 

    MenuItem actionC = menu.findItem(R.id.C); 
    if(actionC!=null) 
     actionC.setVisible(false); 

    return result; 
} 

(К сожалению, я пока не могу комментировать)

Смежные вопросы