1

Я использую одно действие с четырьмя Fragments. Фрагменты , и являются Viewpager Fragments и фрагмент является Detail Fragment, который заменяет фрагмент 3, когда элемент списка щелкнул. К сожалению, когда фрагмент детали заменяет основной фрагмент, он добавляет Toolbar и кнопку «Назад» в дополнение к существующей панели инструментов и Tablayout. Тем не менее, я бы вместо этого заменил существующую панель инструментов и tablayout.Скрытие панели инструментов и табуляция из определенного фрагмента в viewpager

ВОПРОС: Как я мог бы достичь этого, не создавая новую активность?

Мастер фрагмент. Имеет желаемую панель инструментов и вкладку.

enter image description here

Подробности фрагмент. Имеет как новую панель инструментов (по желанию) и оригинальную панель инструментов и tablayout (нежелательную)

enter image description here

MainActivity.XML

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabMode="fixed" 
     app:tabGravity="fill"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     android:background="@color/black_process_2"/> 

</android.support.design.widget.AppBarLayout> 

DetailFragment.XML

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context="com.allison.viewpagermasterdetail.ItemDetailActivity" 
tools:ignore="MergeRootFrame"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/app_bar_height" 
    android:fitsSystemWindows="true" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/toolbar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed" 
     app:toolbarId="@+id/toolbar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/detail_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_collapseMode="pin" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" > 

     </android.support.v7.widget.Toolbar> 

    </android.support.design.widget.CollapsingToolbarLayout> 

</android.support.design.widget.AppBarLayout> 

<android.support.v4.widget.NestedScrollView 
    android:id="@+id/item_detail_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

    <TextView 
     android:id="@+id/item_detail" 
     style="?android:attr/textAppearanceLarge" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="16dp" 
     android:textIsSelectable="true"/> 

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

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical|start" 
    android:layout_margin="@dimen/fab_margin" 
    android:src="@android:drawable/stat_notify_chat" 
    app:layout_anchor="@+id/item_detail_container" 
    app:layout_anchorGravity="top|end" /> 

ответ

2

При открытии детали фрагмент Invoke:

toolbar.setVisibility(View.GONE); 
tabLayout.setVisibility(View.GONE); 

и

@Override 
public void onBackPressed() { 
    if (currentFragment instanceOf DetailFragment) { 
     toolbar.setVisibility(View.VISIBILE); 
     tabLayout.setVisibility(View.VISIBLE); 
    } 
    ... 
} 
1

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

Если вы хотите найти фрагмент детали, я предлагаю вам установить панель инструментов в действие с помощью setSupportActionBar() и изменить ее внутри фрагмента методом getSupportActionBar().

+0

Я ценю ваш ответ, но это немного расстраивает то, что единственная спецификация моего вопроса была проигнорирована. –

+0

Ну, я тоже ответил на вариант без детальной активности :). Я бы настроить панель инструментов с помощью getSupportActionBar() и скрыть tablayout, когда пользователь собирается переключиться на фрагмент детали. Более того, я удалял панель инструментов из макета фрагмента детали. –

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