android:ViewPager指示器,如修补程序图片

mur*_*rkr 1 android android-viewpager viewpagerindicator

所以,我有一个ViewPager,我想实现一个Page-Indicator像Tinder一样简单的图片:

在此处输入图片说明

在此处输入图片说明

我以为找到图书馆会很容易,但是对于我的一生,我找不到任何图书馆。

我不在乎是否通过操纵点的宽度或使用可绘制对象来实现条形图,库唯一要做的就是拉伸条形图,以使它们始终占据100%的宽度ViewPager

任何人都知道这样的图书馆,还是在没有图书馆帮助的情况下容易实现?

Fah*_*hik 9

让我们逐步解决此问题。

首先,在您的项目中添加Jake Wharton的ViewPager库。转到build.gradle(Module:app)并添加此行并同步您的项目。

implementation 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
Run Code Online (Sandbox Code Playgroud)

其次,在您的viewPager所在的xml文件中添加LinePageIndicator。

<com.viewpagerindicator.LinePageIndicator
        android:id="@+id/indicator"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        app:strokeWidth="4dp"
        app:unselectedColor="#FF888888"
        app:selectedColor="#FF880000"/>
Run Code Online (Sandbox Code Playgroud)

将适配器附加到viewpager之后,第三步也是最后一步,添加此代码以获得所需的输出。

LinePageIndicator linePageIndicator = view.findViewById(R.id.indicator);
    linePageIndicator.setViewPager(viewPager);

    //As we are measuring screen width, you should put the calculation inside onGlobalLayoutListener to get the correct screen width
    linePageIndicator.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            int numberOfItems = viewPager.getChildCount();
            DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
            float widthPixel = displayMetrics.widthPixels;

            float itemWidth = widthPixel/numberOfItems;
            linePageIndicator.setLineWidth(itemWidth);
        }
    });
Run Code Online (Sandbox Code Playgroud)

就是这样,您有一个全屏的全线指示器。