Сворачивание макета панели инструментов с использованием одной и той же панели инструментов на разных фрагментах в зависимости от поведения

Я пытаюсь обновить свое приложение, предоставив некоторое поведение Material Design. До сих пор в моем приложении есть навигационный ящик и MainActivity, который загружает фрагмент желания на основе щелчка элемента в меню ящика (как показано ниже:)

введите здесь описание изображения

Когда вы нажимаете «Consejos», он заменяет фрагмент желаемым содержимым следующим образом.

Основная деятельность

private void selectItem(String title, int id) {
        Bundle args = new Bundle();
        args.putString(PlaceholderFragment.ARG_SECTION_TITLE, title);

        Fragment fragment = PlaceholderFragment.newInstance(title);
        fragment.setArguments(args);
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager
                .beginTransaction()
                .replace(R.id.main_content, fragment)
                .commit();


        switch (id) {
            case R.id.nav_localizacion:
                //Snackbar.make(mSnackBarView, R.string.menu_localization, Snackbar.LENGTH_SHORT).show();
                mCurrentSelectedPosition = 0;
                LocalizacionFragment fragment_localizacion = new LocalizacionFragment();
//                fragmentManager = getSupportFragmentManager();
//                Snackbar.make(mSnackBarView, R.string.menu_localization, Snackbar.LENGTH_SHORT).show();
                fragmentManager
                        .beginTransaction()
                        .replace(R.id.main_content, fragment_localizacion)
                        .commit();
                break;
            case R.id.nav_productos:
                Snackbar.make(mSnackBarView, R.string.menu_productos, Snackbar.LENGTH_SHORT).show();
                mCurrentSelectedPosition = 1;
                fragmentManager
                        .beginTransaction()
                        .replace(R.id.main_content, fragment)
                        .commit();
                break;
            case R.id.nav_consejos:
                Snackbar.make(mSnackBarView, R.string.menu_consejos, Snackbar.LENGTH_SHORT).show();
                mCurrentSelectedPosition = 3;
                ConsejosFragment fragment_consejo = new ConsejosFragment();
//                final Fragment fragment_consejo = new ConsejosFragment();
                fragmentManager
                        .beginTransaction()
                        .replace(R.id.main_content, fragment_consejo)
                        .commit();
//                getSupportFragmentManager().beginTransaction().add(R.id.main_content, fragment_consejo).commit();
                break;
            default:
                break;
        }


        drawerLayout.closeDrawers(); // Cerrar drawer

        setTitle(title); // título actual

    }

Он открывает это:

введите здесь описание изображения

Затем, если вы снова нажмете «Recetas», замените фрагмент желаемым содержимым:

введите здесь описание изображения

Но вот в чем дело, если вы нажмете на элемент, я хочу открыть другой фрагмент и использовать AppBarLayout вместе с CollapsingToolbarLayout, чтобы показать изображение с рецептом.

Это макет описания содержимого рецепта:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_content_recetas"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

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

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:id="@+id/backdrop"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                android:scaleType="centerCrop"
                android:src="@drawable/redono_ternera_mechado"
                app:layout_collapseMode="parallax" />


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

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

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

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

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:paddingTop="24dp">

            <include layout="@layout/card_layout" />

            <include layout="@layout/card_layout" />

            <include layout="@layout/card_layout" />

        </LinearLayout>

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

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

Это код фрагмента RecipeDescription.

public class RecetaViewFragment extends Fragment {

    private Context context;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        /* Inflamos el layout */
        View v = inflater.inflate(R.layout.recetas_descripcion_layout, container, false);
        ImageView imageView = (ImageView) v.findViewById(R.id.backdrop);
        Picasso.with(context).load(R.drawable.sopa_goulash_ternera).into(imageView);

        Toolbar toolbar = (Toolbar) v.findViewById(R.id.toolbar_view);
        ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
        if (toolbar != null) {
            toolbar.setSubtitle("Descripción");
        }
        context = v.getContext();
        return v;
    }

Но вот что произошло при запуске приложения:

введите здесь описание изображения

введите здесь описание изображения

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

Спасибо, пожалуйста, запросите у меня больше кода, если это необходимо




Ответы (1)


В моем случае у меня аналогичная проблема.

МОЕ ДЕЛО:

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

Я только что сделал одно изменение, которым я доволен.

На панели инструментов фрагмента я добавил это:

android:layout_height="0dp"
person Keshav    schedule 11.07.2016