Как получить из позиции вкладки OnTabSelected, чтобы добавить DotsIndicator - PullRequest
0 голосов
/ 27 марта 2019

Я нашел, как читать pageSelected в индикаторе точек, но как получить позицию onTabSelected для viewPager.

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
                if(tab.getPosition() == 0){
                    addDotsIndicator(0);
                } else if (tab.getPosition() == 1){
                    addDotsIndicator(1);

                } else if (tab.getPosition()== 2){
                    addDotsIndicator(2);
                } else if (tab.getPosition() == 3){
                    addDotsIndicator(3);
                } else if (tab.getPosition()== 4){
                    addDotsIndicator(4);
                } 




     }
    addDotsIndicator(0);


public void addDotsIndicator(int position){
        mDots = new TextView[5];
        for(int i = 0; i<mDots.length; i++){
            mDots[i] = new TextView(this);
            mDots[i].setText(Html.fromHtml("&#8226"));
            mDots[i].setTextSize(50);
            mDots[i].setTextColor(getResources().getColor(R.color.colorTransparentWhite));

            mDotLayout.addView(mDots[i]);
        }
        if (mDots.length > 0){
            mDots[position].setTextColor(getResources().getColor(R.color.colorWhite));
        }
    }

Если я пишу это, то индикатор точек добавляется в бесконечность, но онинужно переключить

1 Ответ

0 голосов
/ 27 марта 2019

В функции addDotsIndicator () вы можете удалить уже добавленные точки в первой строке, а затем продолжить добавление.Например,

        mDotLayout.removeAllViews() // This right here!

        mDots = new TextView[5];
        for(int i = 0; i<mDots.length; i++){
            mDots[i] = new TextView(this);
            mDots[i].setText(Html.fromHtml("&#8226"));
            mDots[i].setTextSize(50);
            mDots[i].setTextColor(getResources().getColor(R.color.colorTransparentWhite));

            mDotLayout.addView(mDots[i]);
        }
        if (mDots.length > 0){
            mDots[position].setTextColor(getResources().getColor(R.color.colorWhite));
        }
    }

Если у вас есть только точки в mDotLayout, это должно работать нормально.

...