Skip to content
This repository has been archived by the owner on Apr 19, 2018. It is now read-only.

Vertical ViewpagerIndicator #418

Closed
nsuthar20 opened this issue Feb 7, 2017 · 3 comments
Closed

Vertical ViewpagerIndicator #418

nsuthar20 opened this issue Feb 7, 2017 · 3 comments

Comments

@nsuthar20
Copy link

Is there any idea to make ViewpagerIndicator in Vertical orientation?

I have an Vertical Viewpager, so i want an Vertical ViewpagerIndicator.

I also tried to set rotation of indicator to 90 degree, but it sets always in center, because it wants android:layout_width="match_parent".

@YoavSl
Copy link

YoavSl commented Mar 23, 2018

Did you find a solution? I'm facing the same issue.

@nsuthar20
Copy link
Author

nsuthar20 commented Mar 26, 2018

Yes I found.
I did it using LinearLayout with Vertical orientation.

For Example:
In XML file
<LinearLayout android:id="@+id/view_ll_indicator" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@android:color/transparent" android:gravity="center" android:orientation="vertical" android:padding="@dimen/_12sdp" />

In Fragment Class, I'm getting total number of images from Retrofit Client API and setting images counts into ivDotsImage[]:

public class DemoFragment extends Fragment{
    private ImageView ivDotsImage[];
    private LinearLayout mDotsIndicator;
    private VerticalViewPagers mViewPager;
    private List<String> listDressDetailImages;
    private InfinitePagerAdapterVertical pagerAdapter;
    private CustomPagerAdapter customPagerAdapter;
    private int nDetailPage;

 @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_dress_detail, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        initialize(view);
    }

    private void initialize(View view) {
        listDressDetailImages = new ArrayList<>();
        mViewPager = (VerticalViewPagers) view.findViewById(R.id.view_pager);
        mDotsIndicator = (LinearLayout) view.findViewById(R.id.view_ll_indicator);

    mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }

            @Override
            public void onPageSelected(int position) {
                for (int i = 0; i < nDetailPage; i++) {
                ivDotsImage[i].setImageResource(R.drawable.ic_detail_navigation_dot_passive);
                }
                                   
                ivDotsImage[position].setImageResource(R.drawable.ic_detail_navigation_dot_active);
            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });

      fetchVerticalImagesAPI();
   }

    private void fetchVerticalImagesAPI() {
     ItemAPI itemAPI = ApiClient.getClient().create(ItemAPI.class);
     Call<DressDetailModel> call = itemAPI.dressDetail();
     
     call.enqueue(new Constants.BackoffCallback<DressDetailModel>(retryNum) {
            @Override
            public void onResponse(Call<DressDetailModel> call, Response<DressDetailModel> response) {
                try {
                    DressDetailResult dressDetailResult = null;
                    for (int j = 0; j < response.body().getResults().size(); ++j) {
                        dressDetailResult = response.body().getResults().get(j);
                        listDressDetailImages.addAll(dressDetailResult.getImages());
                    }
                    customPagerAdapter = new CustomPagerAdapter(getActivity(), listDressDetailImages, 
                     fragmentManager);
                    nDetailPage = customPagerAdapter.getCount();
                    ivDotsImage = new ImageView[nDetailPage];
                    for (int i = 0; i < nDetailPage; i++) {
                        LinearLayout.LayoutParams imageLp;
                        imageLp = new LinearLayout.LayoutParams((int) 
                        getActivity().getResources().getDimension(R.dimen._7sdp), (int) 
                        getActivity().getResources().getDimension(R.dimen._7sdp));

                        imageLp.setMargins(0, 0, 0, Constants.dpToPx(getActivity(), 8));

                        ivDotsImage[i] = new ImageView(getActivity());
                        ivDotsImage[i].setImageResource(R.drawable.ic_detail_navigation_dot_passive);
                        ivDotsImage[i].setLayoutParams(imageLp);
                       
                       //add ivDots into Vertical LinearLayout
                        mDotsIndicator.addView(ivDotsImage[i]);
                    }

                    pagerAdapter = new InfinitePagerAdapterVertical(customPagerAdapter);
                    mViewPager.setAdapter(pagerAdapter);
                    customPagerAdapter.notifyDataSetChanged();
                    pagerAdapter.notifyDataSetChanged();
                    mViewPager.setCurrentItem(0);

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailedAfterRetry(Throwable t) {
                t.printStackTrace();
            }
        });
    }
}

@YoavSl
Copy link

YoavSl commented Mar 26, 2018

Great, thanks a lot!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants