• Stars
    star
    139
  • Rank 262,954 (Top 6 %)
  • Language
    Java
  • Created over 11 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

这是 Android 上的一个 ViewPager 页面指示器组件,用于标识当前显示的页面

logo_image PagerIndicator

Platform API Android Arsenal Release Version

这是 Android 上的一个 ViewPager 页面指示器组件,用于标识当前显示的页面

sample_image

特性

  • 当所有的 Tab 在横向上无法充满整个屏幕的时候,将会根据 allowWidthFull 参数决定是否调整所有的 Item 来充满。调整的规则是平均分配每个 Tab 的宽度,如果某个 Tab 的最小宽度大于平均宽度,那么其宽度保持不变
  • 当所有的 Tab 在横向上能够充满整个屏幕的时候,将会从左到右依次排列
  • 用法简单,支持在布局中直接包含 View 或者在代码中直接调用 PagerIndicator.addTab() 方法添加
  • Tab View 支持设置外边距
  • 支持通过 disableTensileSlidingBlock 属性设置是否拉伸滑块图片

开始使用

1. 从 mavenCentral 导入 PagerIndicator

在 app 的 build.gradle 文件的 dependencies 节点中加入依赖

dependencies {
	implementation("io.github.panpf.pagerindicator:pagerindicator:${LAST_VERSION}")
}

${LAST_VERSION}: Download (No include 'v')

2. 在布局中使用

<me.panpf.pagerid.PagerIndicator
    xmlns:app="http://schemas.android.com/apk/res/你的包名"
    android:id="@+id/slidingTabStrip_2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/sliding_tab_strip_background"
    app:pi_allowWidthFull="true"
    app:pi_slidingBlock="@drawable/image_sliding_block">
    <LinearLayout
	android:layout_width="wrap_content"
	android:layout_height="wrap_content">
        <TextView style="@style/text_slidingTabTitle" android:text="精品"/>
        <TextView style="@style/text_slidingTabTitle" android:text="排行"/>
        <TextView style="@style/text_slidingTabTitle" android:text="分类"/>
        <TextView style="@style/text_slidingTabTitle" android:text="管理"/>
    </LinearLayout>
</me.panpf.pagerid.PagerIndicator>

效果图如下:

sample_image2

你还可以在代码中通过 PagerIndicator.setTabViewFactory() 方法添加Tab

支持的布局属性:

  • pi_slidingBlock:指定滑块图片,对应的方法是 PagerIndicator.setSlidingBlockDrawable(Drawable)
  • pi_allowWidthFull:当所有 Tab 无法充满 PagerIndicator 时是否自动调整所有 Tab 的宽度来达到充满的目的,对应的方式是 PagerIndicator.setAllowWidthFull(boolean)
  • pi_disableViewPager:禁用 ViewPager,禁用后不会有初始选中状态效果,也不会绘制滑块,你调用 setViewPager() 方法也不会起作用
  • pi_disableTensileSlidingBlock:禁止拉伸滑块图片

3. 绑定 ViewPager

ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(...);

PagerIndicator pagerIndicator = (PagerIndicator) findViewById(R.id.slidingTabStrip);
pagerIndicator.setViewPager(viewPager);

注意:

  • 在调用 setViewPager(ViewPager) 方法之前要先设置 ViewPager 的 Adapter

你还可以直接调用 ViewPager.setCurrentItem(int) 方法来改变默认 Tab,无论是在调用 setViewPager(ViewPager) 方法之前还是之后都可以

更多内容请参见 sample 源码

License

Copyright (C) 2017 Peng fei Pan <[email protected]>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

sketch

Sketch is a powerful and comprehensive image load library on Android, in addition to the basic functions, it also supports Jetpack Compose, GIF, SVG, video thumbnails, gesture zoom, huge images sampling, ExifInterface and other functions. Sketch 是 Android 上的一个强大且全面的图片加载库,除了基础功能外,还支持 Jetpack Compose、GIF、SVG、视频缩略图、手势缩放、超大图采样、ExifInterface 等功能。
Kotlin
1,934
star
2

spider-web-score-view

SpiderWebScoreView 是 Android 上的一个蛛网评分控件 SpiderWebScoreView Android is used on a cobweb score view
Java
640
star
3

switch-button

SwitchButton 是 Android 上的一个开关按钮控件 【Deprecated】【Stop maintenance】
Java
332
star
4

assembly-adapter

AssemblyAdapter 是 Android 上的一个为各种 Adapter 提供开箱即用实现的库。AssemblyAdapter is a library on Android that provides out-of-the-box implementations for various Adapters.
Kotlin
173
star
5

bintray-publish

Super easy way to publish your Android and Java artifacts to bintray.
Groovy
97
star
6

scratch-award-view

这是一个刮刮卡组件,用于实现刮奖效果
Java
52
star
7

stickyitemdecoration

RecyclerView 黏性 item 实现。RecyclerView sticky item implementation.
Kotlin
18
star
8

android-sheller

Sheller 是 Android 上的一个 shell 库,可帮助开发者方便的执行 shell 命令
Java
11
star
9

view-expander

ViewExpander 用来快速实现 View 展开关闭效果,使用非常简单,适用于所有的 View
Java
10
star
10

barcode-utils

BarcodeUtils 是一个条码解析、生成、扫描库,基于 zxing 封装,适合快速在项目中集成条码相关功能
Java
7
star
11

android-activitymonitor

Android, Activity, Monitor
Java
4
star
12

zoomimage

Android library for scaling images, supporting double-tap zoom, gesture zoom, single-finger drag, inertial swipe, location, rotate, huge image sub-sampling loading, and more. Both View and Compose are supported. 用于缩放图像的 Android 库,支持双击缩放、手势缩放、单指拖动、惯性滑动、定位、旋转、超大图采样加载等功能。支持 View 和 Compose。
Kotlin
3
star
13

tools4a

Extensions to the Android standard library and support libraries and some basic tools
Java
2
star
14

tools4k

Extensions to the Kotlin standard library
Kotlin
2
star
15

tools4j

Extensions to the Java standard library, some tool methods related to File, IO, primitive types, String, Array, and Collection
Java
2
star
16

maven-publish-gradle-plugin

Gradle plugin that configures an uploadArchives task to automatically upload all of your Java, Kotlin or Android libraries to any Maven instance.
Kotlin
2
star
17

android-liveevent

Java
1
star
18

jsonx

Extensions to the org.json standard library
Java
1
star