Sunday, 4 July 2021

Make RecyclerView scroll with the rest of the fragment layouts?

I have set up a RecyclerView adapter with ViewPager , it works well but there is one issue, the Layout of RecyclerView is fixed while scrolling up and down in the fragment. But I want it to scroll with them.

The RecyclerView and ViewPager are both set inside viewpager_with_toolbar_overlay.xml Layout , and both has been settup in The Activity.

enter image description here

And off course this issue will be gone if I set RecyclerView adapter inside fragment, but I will get unfixable highlighting and scrolling issues , that is why I set it inside the activity because it does not give those issues.

I need to make it work somehow inside the activity.

My goal is that RecyclerView and ViewPager has to be in the same layout xml file and they both must either be in the acivity or fragment class

Is it possible to make the RecyclerView scroll with rest of the fragment layouts?

or

Is it possible to do it programmatically?

Here is the activity

public class TvShowEpisodeDetails extends MizActivity{

    
    @Override
    protected int getLayoutResource() {
        return R.layout.viewpager_with_toolbar_overlay;
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        mBus = MizuuApplication.getBus();
        super.onCreate(savedInstanceState);

        // Set theme
        setTheme(R.style.Mizuu_Theme_NoBackground);

       


        // setting episodeslist
        final ArrayList<PlanetModel> episodeslist = new ArrayList<>();
        for(TvShowEpisode e : mEpisodes){
            episodeslist.add(new PlanetModel(e.mEpisode));
        }


        // setting RecyclerView
        mEpisodesList = (RecyclerView) findViewById(R.id.episodesLIST);


        // Setting LinearLayoutManager
        LinearLayoutManager layoutManager
                = new LinearLayoutManager(this.getApplicationContext(), LinearLayoutManager.HORIZONTAL, false);
        //mEpisodesList.setLayoutManager(new LinearLayoutManager(mContext));
        mEpisodesList.setLayoutManager(layoutManager);


        // Setting RecyclerView Adapter
        PlanetAdapter.OnItemClickListener indicatorCallback = new PlanetAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(String item) {
                SharedPreferences getPref = getContext().getSharedPreferences("PlanetAdapter", Context.MODE_PRIVATE);
                int pos = getPref.getInt("newPosition", 0);
                mViewPager.setCurrentItem(pos,false);
            }
        };
        final PlanetAdapter planetAdapter = new PlanetAdapter(episodeslist,indicatorCallback);
        mEpisodesList.setAdapter(planetAdapter);


        // Setting ViewPager
        mViewPager = (ViewPager) findViewById(R.id.awesomepager);
        mViewPager.setAdapter(new TvShowEpisodeDetailsAdapter(getSupportFragmentManager()));
        mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                planetAdapter.setSelectedIndex(position);
                planetAdapter.notifyDataSetChanged();
                mEpisodesList.smoothScrollToPosition(position);
                //mEpisodesList.scrollToPosition(position);
                for (int i=0; i<episodeslist.size(); i++)
                {
                    episodeslist.get(i).setPlanetSelected(false);
                }
                episodeslist.get(position).setPlanetSelected(true);
                ViewUtils.updateToolbarBackground(TvShowEpisodeDetails.this, mToolbar, 0, mEpisodes.get(position).getTitle(), Color.TRANSPARENT);
            }
        });

        if (savedInstanceState != null) {
            mViewPager.setCurrentItem(savedInstanceState.getInt("tab", 0));
        } else {
            for (int i = 0; i < mEpisodes.size(); i++) {
                if (mEpisodes.get(i).getSeason().equals(MizLib.addIndexZero(mSeason)) && mEpisodes.get(i).getEpisode().equals(MizLib.addIndexZero(mEpisode))) {
                    mViewPager.setCurrentItem(i);
                    break;
                }
            }
        }
    }
}

viewpager_with_toolbar_overlay

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <android.support.v4.view.ViewPager
        android:id="@+id/awesomepager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ProgressBar
        android:id="@+id/progressbar"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:visibility="gone" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:background="#068006"
        android:layout_marginTop="450dp"
        >

        <android.support.v7.widget.RecyclerView
            android:id="@+id/episodesLIST"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:scrollbars="horizontal" />
    </LinearLayout>

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

</FrameLayout>

Here is the xml layout of the fragment which is inflated in onCreateView of the fragment class

episode_details.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:background="@color/abc_input_method_navigation_guard">

    <com.miz.views.ObservableScrollView
        android:id="@+id/observableScrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <RelativeLayout
                android:id="@+id/relativeLayout1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <ImageView
                    android:id="@+id/episodePhoto"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/backdrop_portrait_height"
                    android:scaleType="centerCrop"
                    android:src="@drawable/bg" />

                <com.melnykov.fab.FloatingActionButton
                    android:id="@+id/fab"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/episodePhoto"
                    android:layout_alignParentEnd="false"
                    android:layout_alignParentRight="true"
                    android:layout_marginTop="@dimen/content_details_fab_negative_margin"
                    android:layout_marginRight="@dimen/content_details_baseline_margin"
                    android:src="@drawable/ic_play_arrow_white_36dp"
                    app:fab_colorNormal="#666"
                    app:fab_type="mini" />

                <LinearLayout
                    android:id="@+id/linearLayout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/fab"
                    android:layout_marginLeft="@dimen/content_details_baseline_margin"
                    android:layout_marginTop="@dimen/content_details_title_margin_top"
                    android:layout_marginRight="@dimen/content_details_baseline_margin"
                    android:layout_toLeftOf="@+id/fab"
                    android:orientation="vertical">

                    <TextView
                        android:id="@+id/movieTitle"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:ellipsize="end"
                        android:maxLines="3"
                        android:textAppearance="?android:attr/textAppearanceLarge"
                        android:textColor="#FFFFFF"
                        android:textSize="@dimen/content_details_title" />

                    <TextView
                        android:id="@+id/textView7"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="@dimen/content_details_very_small_margin"
                        android:layout_marginBottom="@dimen/content_details_baseline_margin"
                        android:textAppearance="?android:attr/textAppearanceLarge"
                        android:textColor="#FFFFFF"
                        android:textSize="@dimen/content_details_subheader"
                        android:textStyle="bold|italic" />
                </LinearLayout>

            </RelativeLayout>

            <LinearLayout
                android:id="@+id/details_area"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#666"
                android:baselineAligned="false"
                android:elevation="1dp"
                android:minHeight="@dimen/content_details_large_margin"
                android:orientation="horizontal"
                android:paddingLeft="@dimen/content_details_baseline_margin"
                android:paddingTop="@dimen/content_details_small_margin"
                android:paddingRight="@dimen/content_details_baseline_margin"
                android:paddingBottom="@dimen/content_details_small_margin">

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_weight="1"
                    android:gravity="center_horizontal"
                    android:orientation="vertical">

                    <TextView
                        android:id="@+id/TextView03"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:ellipsize="end"
                        android:gravity="center_horizontal"
                        android:lines="1"
                        android:maxLines="1"
                        android:text="@string/detailsAirDate"
                        android:textAppearance="?android:attr/textAppearanceMedium"
                        android:textSize="@dimen/content_details_area_subheader" />

                    <TextView
                        android:id="@+id/textReleaseDate"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center_horizontal"
                        android:textAppearance="?android:attr/textAppearanceMedium"
                        android:textColor="#FFFFFF"
                        android:textSize="@dimen/content_details_area_header"
                        android:textStyle="bold" />
                </LinearLayout>

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_weight="1"
                    android:gravity="center_horizontal"
                    android:orientation="vertical">

                    <TextView
                        android:id="@+id/textView61"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:ellipsize="end"
                        android:gravity="center_horizontal"
                        android:lines="1"
                        android:maxLines="1"
                        android:text="@string/detailsRating"
                        android:textAppearance="?android:attr/textAppearanceMedium"
                        android:textSize="@dimen/content_details_area_subheader" />

                    <TextView
                        android:id="@+id/textView12"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center_horizontal"
                        android:textAppearance="?android:attr/textAppearanceMedium"
                        android:textColor="#FFFFFF"
                        android:textSize="@dimen/content_details_area_header"
                        android:textStyle="bold" />
                </LinearLayout>
            </LinearLayout>



            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:padding="@dimen/content_details_baseline_margin">

                <TextView
                    android:id="@+id/textView2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="@dimen/content_details_baseline_margin"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="#FFFFFF"
                    android:textSize="@dimen/content_details_body_text" />

                <TextView
                    android:id="@+id/director"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="12dp"
                    android:drawableLeft="@drawable/ic_movie_white_24dp"
                    android:drawablePadding="@dimen/movie_details_padding"
                    android:focusable="false"
                    android:gravity="center_vertical"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="#f0f0f0"
                    android:textSize="@dimen/content_details_body_text" />

                <TextView
                    android:id="@+id/writer"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="12dp"
                    android:drawableLeft="@drawable/ic_edit_white_24dp"
                    android:drawablePadding="@dimen/movie_details_padding"
                    android:focusable="false"
                    android:gravity="center_vertical"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="#f0f0f0"
                    android:textSize="@dimen/content_details_body_text" />

                <TextView
                    android:id="@+id/guest_stars"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="12dp"
                    android:drawableLeft="@drawable/ic_people_white_24dp"
                    android:drawablePadding="@dimen/movie_details_padding"
                    android:focusable="false"
                    android:gravity="center_vertical"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="#f0f0f0"
                    android:textSize="@dimen/content_details_body_text" />

                <TextView
                    android:id="@+id/textView3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:drawableLeft="@drawable/ic_folder_open_white_24dp"
                    android:drawablePadding="@dimen/movie_details_padding"
                    android:gravity="center_vertical"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="#FFFFFF"
                    android:textSize="@dimen/content_details_body_text" />
            </LinearLayout>

        </LinearLayout>

    </com.miz.views.ObservableScrollView>

    <FrameLayout
        android:id="@+id/progress_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/bg"
        android:visibility="gone">

        <ProgressBar
            android:id="@+id/progressBar1"
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center" />
    </FrameLayout>

</FrameLayout>


from Make RecyclerView scroll with the rest of the fragment layouts?

No comments:

Post a Comment