Отключить отображение панели инструментов Activity во фрагментах

Текущий макет моей деятельности:

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    android:id = "@+id/drawerLayout"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:fitsSystemWindows = "true">

    <RelativeLayout
        android:layout_width = "match_parent"
        android:layout_height = "match_parent">

    <include
        android:layout_height = "wrap_content"
        android:layout_width = "match_parent"
        android:id = "@+id/main_toolbar"
        layout = "@layout/main_toolbar"/>

    <FrameLayout
        android:id = "@+id/flMainContainer"
        android:layout_below = "@id/main_toolbar"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"/>
    </RelativeLayout>

    <android.support.design.widget.NavigationView
        android:id = "@+id/nav_view"
        android:layout_width = "wrap_content"
        android:layout_height = "match_parent"
        android:layout_gravity = "start"
        android:fitsSystemWindows = "true"
        app:menu = "@menu/drawer_view"
        app:headerLayout = "@layout/header"/>


</android.support.v4.widget.DrawerLayout>

По сути, это просто панель инструментов и FrameLayout (контейнер, заполненный фрагментами). Из-за этого каждый фрагмент получает эту панель инструментов, которая мне нужна только в MainActivity. Как мне это обойти? У некоторых фрагментов есть собственная панель инструментов, но поскольку только FrameLayout в действии заменяется макетом фрагмента, панель инструментов действия всегда присутствует.

Если я даю фрагменту его собственную панель инструментов, панель инструментов действия по-прежнему будет отображаться над панелью инструментов фрагмента - я хочу, чтобы вместо этого она заменила панель инструментов.

В моем AndroidManifest я установил свою тему NoActionBar.

Ценю любую помощь!

0
0
32
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

В вашем фрагменте first в onViewCreated(..) используйте это: -

 if (getActivity()!=null) 
      getActivity().findViewById(R.id.main_toolbar).setVisibility(View.GONE);

Также для видимости необходимо снова установить значение VISIBLE в onDestroyView.

Valentun 18.03.2018 17:31

он говорит, что не требует этой панели инструментов ни в каком другом фрагменте !! @Valentun

Santanu Sur 18.03.2018 17:33

он сказал, что у него есть только НЕКОТОРЫЕ фрагменты с собственными панелями инструментов. Кстати, я думаю, что если фрагмент изменит состояние родительской активности, он должен восстановить исходное состояние после того, как он исчезнет с экрана

Valentun 18.03.2018 17:38

Как бы то ни было, я думаю, что приведенное выше решение в любом случае соответствует его требованиям !! @Valentun

Santanu Sur 18.03.2018 17:41

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

Valentun 18.03.2018 17:42

Именно то, что мне нужно, спасибо @SantanuSur и @Valentun!

hashik 18.03.2018 18:44

если вам не нужна панель инструментов в действии. Удалите этот код из своего макета:

<include android:layout_height = "wrap_content" android:layout_width = "match_parent" android:id = "@+id/main_toolbar" layout = "@layout/main_toolbar"/>

Но автор сказал, что скрывать панель инструментов нужно только в НЕКОТОРЫХ фрагментах.

Valentun 18.03.2018 17:45

если вам не нужна панель инструментов в вашей деятельности. Удалите этот код из своего макета

<include 
android:layout_height = "wrap_content" 
android:layout_width = "match_parent" 
android:id = "@+id/main_toolbar" 
layout = "@layout/main_toolbar"/>

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