Add ViewPagerIndicator to Android Studio

前端 未结 5 973
余生分开走
余生分开走 2020-11-30 21:40

i\'m trying to get Jake Wharton\'s ViewPagerIndicator working with Android Studio but unfortunately it won\'t work.
I downloaded the .aar file from here and included it

5条回答
  •  心在旅途
    2020-11-30 22:06

    You can do it without any third party library

    Final Result:

    1) Use frame layout as a container for Viewpager and then add a Linearlayout at the bottom of it.

    
    
                    
    
                    
    
                        
    
                        
                    
    
                
    

    2) Define size and margin for indicators

      //define globaly 
       private LinearLayout.LayoutParams imageParam;
    
       //init params
          int margin = Utils.pxFromDp(getActivity(), 5);
            int width = Utils.pxFromDp(getActivity(), 8);
            imageParam = new LinearLayout.LayoutParams(width, width);
            imageParam.setMargins(margin, margin, margin, margin);
    

    3) Add Indicators in Linear Layout

     for (int indicatorCount = 0; indicatorCount < productFromShoppingList.getProductImages().size();
                 indicatorCount++) {
    
                ImageView imageIndicator =
                        new ImageView(getActivity());
    
                imageIndicator.setAdjustViewBounds(true);
                imageIndicator.setScaleType(ImageView.ScaleType.FIT_XY);
                imageIndicator.setLayoutParams(imageParam);
    
                indicatorContainer.addView(imageIndicator);
                indicators.add(imageIndicator);
                imageIndicator.setBackgroundResource(R.drawable.indicator_unselected);
            }
    

    4) Initialize indicator at 0 position

     indicators.get(0).setBackgroundResource(R.drawable.indicator_unselected);
    

    5) Update indicator on view pager page change

    carousalViewPager.setAdapter(new slidingPagerAdapter(getActivity(),
                productFromShoppingList.getProductImages()));
    
        carousalViewPager
                .addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                    @Override
                    public void onPageScrolled(int position,
                                               float positionOffset, int positionOffsetPixels) {
    
                    }
    
                    @Override
                    public void onPageSelected(int position) {
    
                        currentPageIndex = position;
                        updateIndicators(currentPageIndex);
                    }
    
                    @Override
                    public void onPageScrollStateChanged(int state) {
    
                    }
                });
    
    
    private void updateIndicators(int selectedPostion) {
        for (int indicatorPosition = 0; indicatorPosition < indicators.size(); indicatorPosition++) {
            indicators.get(indicatorPosition).setBackgroundResource(indicatorPosition == selectedPostion ? R.drawable.indicator_selected
                    : R.drawable.indicator_unselected);
        }
    }
    

    Last but not least add this 2 drawable for indicator

    indicator_unselected.xml

    
    
        
    
    

    indicator_selected.xml

    
        
        
    
    

提交回复
热议问题