Обработка видимости панели инструментов деятельности в соответствии с видимым фрагментом - PullRequest
0 голосов
/ 23 сентября 2018

В моем приложении для Android есть одно действие и много фрагментов.Однако я хочу показать панель инструментов только для некоторых фрагментов, для других я хочу, чтобы фрагмент был полноэкранным.Какой лучший и рекомендуемый способ сделать это (показать и скрыть панель инструментов активности в соответствии с видимым фрагментом)?

Ответы [ 3 ]

0 голосов
/ 23 сентября 2018

если вы используете viewPager, то вы можете сделать это, используя только одну панель инструментов в вашей MainActivity

 pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {

              if(position==YourFragmentPosition)
                        {
                     toolbar.setVisibility(View.VISIBLE);
                           }
                  else{
                      toolbar.setVisibility(View.GONE);
                     }
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {

    });
0 голосов
/ 23 сентября 2018

Я предпочел использовать интерфейс для этого.

public interface ActionbarHost {
    void showToolbar(boolean showToolbar);
}

заставить вашу деятельность реализовать ActionbarHost и переопределить showToolbar как.

@Override
public void showToolbar(boolean showToolbar) {
    if (getSupportActionBar() != null) {
        if (showToolbar) {
            getSupportActionBar().show();
        } else {
            getSupportActionBar().hide();
        }
    }
}

Теперь из вашего фрагмента инициализировать с onAttach()

private ActionbarHost actionbarHost;
@Override
public void onAttach(Context context) {
    super.onAttach(context);
    if (context instanceof ActionbarHost) {
        actionbarHost = (ActionbarHost) context;
    }
}

теперь просто если вы хотите скрыть вызов панели действий actionbarHost.showToolbar(false); от фрагмента.

if (actionbarHost != null) {
            actionbarHost.showToolbar(false);
        }

Также я бы предложил снова показать его в onDetach()

@Override
public void onDetach() {
    super.onDetach();
    if (actionbarHost != null) {
        actionbarHost.showToolbar(true);
    }
}
0 голосов
/ 23 сентября 2018

Так как вам нужны разные представления, каждый из ваших фрагментов должен иметь (когда вы хотите) свои toolbar.

Следовательно, ваш макет Activity будет иметь простой фрагмент_контейнер.

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