3

我试图通过提供一些 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;
    }

但这就是运行应用程序时发生的情况:

在此处输入图像描述

在此处输入图像描述

它在原始工具栏中嵌入了折叠工具栏,我的问题是我的方法是否不正确。我的意思是,我必须只有一个工具栏,然后无论我是否需要都应用折叠行为,或者我必须找到一种方法来隐藏原始工具栏并使用这个工具栏(但是当我想给正确返回导航到我的应用程序?)

谢谢,如果需要,请向我索取更多代码

4

1 回答 1

0

就我而言,我遇到了类似的问题。

我的情况:

我想要一个 Activity 中的工具栏,因为我有一个导航抽屉,但也想在 Fragment 中使用折叠工具栏。

我只是做了一个我很满意的改变。

在片段工具栏中,我添加了这个:

android:layout_height="0dp"
于 2016-07-11T09:37:30.977 回答