Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PreferenceFragment no scroll in CollapsingToolbarLayout

I have a problem with PreferenceFragment and CollapsingToolbarLayout. I have a base layout:

<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:id="@+id/mainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.base.BaseActivity">

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

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/ctlLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            android:minHeight="?attr/actionBarSize"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            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>

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:nestedScrollingEnabled="true"/>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fabFav"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="85dp"
    android:src="@android:drawable/ic_menu_save"
    app:layout_anchor="@id/appbarLayout"
    app:layout_anchorGravity="bottom|right|end"
    android:visibility="gone" />

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fabShare"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/fab_margin"
    android:src="@android:drawable/ic_menu_share"
    app:borderWidth="0dp"
    app:layout_anchor="@id/appbarLayout"
    app:layout_anchorGravity="bottom|right|end"
    android:visibility="gone" />

<fragment
    android:id="@+id/search_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:name="com.eventum.raedictionary.fragments.SearchFragment"
    tools:layout="@layout/fragment_search"/>

The problem is when I inflate the Framelayout with a PreferenceFragment the scroll doesn't work but with a normal Fragment works properly.

        BaseSettingFragment settingsFragment = new BaseSettingFragment();

        fragmentTransaction = getFragmentManager().beginTransaction();

        fragmentTransaction.setCustomAnimations(R.transition.fade_in, R.transition.fade_out);

        fragmentTransaction.replace(R.id.fragment_container, settingsFragment);

        fragmentTransaction.commit();

I haven't found any solutions for this problem, can anyone help me?

Thank you in advance.

PD: Sorry for my English.

like image 276
Buntupana Avatar asked Nov 29 '15 15:11

Buntupana


1 Answers

PreferenceFragment is based on ListView, which does not support the nested scrolling APIs required for CollapsingToolbarLayout. You can instead use the Preference Support Library and PreferenceFragmentCompat, which is based on RecyclerView and does support the nested scrolling APIs required.

like image 177
ianhanniballake Avatar answered Oct 31 '22 18:10

ianhanniballake