Как скрыть панель BottomNavigation (активность панели навигации Botton) в определенном фрагменте - PullRequest
0 голосов
/ 03 мая 2018

Я знаю, что я не первый, кто задал этот вопрос, но я сослался на множество SO-сообщений по этому поводу, но мой запрос ничего не решил.

То, что я хочу сделать, - это моя MainActivity («Нижняя панель навигации»). У меня есть нижняя панель навигации. В этой MainActivity у меня есть просмотры карт. нижняя панель навигации. И когда я вернусь обратно в MainActivity, внизу должна быть панель навигации.

Здесь в моем случае Alarm.java - это фрагмент, где я хочу скрыть нижнюю панель навигации.

Alarm.java

public class Alarm extends Fragment {

    private OnFragmentInteractionListener mListener;

    public Alarm() {

    }

    public static Alarm newInstance(String param1, String param2) {
        Alarm fragment = new Alarm();
        Bundle args = new Bundle();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {

        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_alarm, container, false);
    }

    public void onButtonPressed(Uri uri) {
        if (mListener != null) {
            mListener.onFragmentInteraction(uri);
        }
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof OnFragmentInteractionListener) {
            mListener = (OnFragmentInteractionListener) context;
        } else {
            throw new RuntimeException(context.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }

    public interface OnFragmentInteractionListener {
        void onFragmentInteraction(Uri uri);
    }
}

1 Ответ

0 голосов
/ 03 мая 2018

В вашем MainActivity вы можете реализовать два метода, которые будут отвечать за отображение и скрытие вашего BottomNavigationView. Например, эти два метода оживляют его, скользя вверх и вниз:

private void hideBottomNavigationView(BottomNavigationView view) {
    view.clearAnimation();
    view.animate().translationY(view.getHeight()).setDuration(300);
}

public void showBottomNavigationView(BottomNavigationView view) {
    view.clearAnimation();
    view.animate().translationY(0).setDuration(300);
}

В MainActivity вы звоните hide прямо перед открытием CardView, и звоните show в onCreate или onResume.

EDIT:

Но я думаю, что более понятным способом было бы создать интерфейс в вашем фрагменте:

public interface OnCardViewOpenedInterface{
    void onOpen(); // hide bottom bar when photo is opened
    void onClose(); // show bottom bar when photo is opened
}

И вызовите эти методы в onStop и onResume вашего Fragment:

@Override
public void onStop() {
    super.onStop();
    mListener.onClose();
}

@Override
public void onResume() {
    super.onResume();
    mListener.onOpen();
}

А затем внедрите интерфейс в MainActivity, переопределите методы onOpen() и onClose() и внутри вызовите методы hide и show.

Они оба, вероятно, будут работать, может быть, второй слишком сложен, просто мне это нравится больше.

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